Elasticsearch Java 客户端提供了与 Elasticsearch 集群交互的 Java API,支持所有 Elasticsearch 的核心功能,如索引、搜索、更新和删除文档,以及管理和监控集群等。
一、Elasticsearch Java 客户端的基本使用
连接 Elasticsearch 集群,首先需要建立一个 RestClient 或者 RestHighLevelClient 的实例。RestHighLevelClient 基于 RestClient,提供更高级别的方法,使用起来更方便。
RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")));
下面的示例展示了如何使用高级 REST 客户端来索引文档。
IndexRequest request = new IndexRequest("posts"); request.id("1"); String jsonString = "{" + "\"user\":\"kimchy\"," + "\"postDate\":\"2013-01-30\"," + "\"message\":\"trying out Elasticsearch\"" + "}"; request.source(jsonString, XContentType.JSON); IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
二、搜索文档
使用`SearchRequest`和`SearchSourceBuilder`来构建一个搜索请求。可以设定一系列参数来定制搜索行为,例如设定查询条件、排序、分页等。
SearchRequest searchRequest = new SearchRequest("posts"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchAllQuery()); searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
处理搜索的响应也同样简单。`SearchResponse`包含了一系列`SearchHit`,每个`SearchHit`都有一个`source`字段,存储了原始文档的内容。
SearchHits hits = searchResponse.getHits(); for (SearchHit hit : hits) { String sourceAsString = hit.getSourceAsString(); if (sourceAsString != null) { JsonParser parser = new JsonParser(); JsonElement jsonElement = parser.parse(sourceAsString); System.out.println(jsonElement.toString()); } }
三、关闭客户端
当不再需要 Java 客户端与 Elasticsearch 交互时,可以通过 `close` 方法关闭连接。
client.close();
注意,通过 `close` 方法关闭 Java 客户端将会释放所有的资源,包括线程、连接,以及连接池。因此,记得在所有的操作都完成后,通过 `close` 方法关闭 Java 客户端。