【发布时间】:2022-02-05 15:17:40
【问题描述】:
我正在制作一个应用程序,前端有反应,后端有 java(带有 tomcat 服务器的动态 Web 应用程序)。我有一些数据存储在 elasticsearch 中,我想将它们提取到 java 中并将它们发送到响应前端。不知道如何执行它。任何资源或一些高级想法将不胜感激。
谢谢
【问题讨论】:
标签: java reactjs elasticsearch tomcat java-ee-6
我正在制作一个应用程序,前端有反应,后端有 java(带有 tomcat 服务器的动态 Web 应用程序)。我有一些数据存储在 elasticsearch 中,我想将它们提取到 java 中并将它们发送到响应前端。不知道如何执行它。任何资源或一些高级想法将不胜感激。
谢谢
【问题讨论】:
标签: java reactjs elasticsearch tomcat java-ee-6
我认为你应该使用以下技术链:
对于服务器项目,您需要添加以下依赖项:
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>7.16.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
之后你必须为elasticsearch创建一个客户端:
// Create the low-level client
RestClient restClient = RestClient.builder(
new HttpHost("localhost", 9200)).build();
// Create the transport with a Jackson mapper
ElasticsearchTransport transport = new RestClientTransport(
restClient, new JacksonJsonpMapper());
// And create the API client
ElasticsearchClient client = new ElasticsearchClient(transport);
在业务服务(或您的 serlet)中,您使用此客户端从 ES 检索数据:
SearchResponse<Product> search = client.search(s -> s
.index("products")
.query(q -> q
.term(t -> t
.field("name")
.value(v -> v.stringValue("bicycle"))
)),
Product.class);
for (Hit<Product> hit: search.hits().hits()) {
processProduct(hit.source());
}
上述代码 sn-p 从“product”索引中搜索名称与“bicycle”匹配的所有项目,并将它们作为 Product 应用程序类的实例返回。
更多关于java客户端的信息可以参考官方ES文档here
【讨论】: