特点,maven 引入、使用先容: https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-low.html
API doc :https://artifacts.elastic.co/javadoc/org/elasticsearch/client/elasticsearch-rest-client/6.2.4/index.html.
逾期的客户端就讲到这里
三、Java API Client
GetResponse<ObjectNode> response = elasticsearchClient.get(g -> g
.index("products")
.id("bk-1"),
ObjectNode.class
);
if (response.found()) {
ObjectNode json = response.source();
String name = json.get("name").asText();
log.info("产品名称 " + name);
} else {
log.info("未找到产品");
}
复制代码
目标类是一个原始的JSON对象。
修改文档
UpdateResponse updateResponse = elasticsearchClient.update(u -> u
.doc("products")
.id("bk-1"),
Product.class);
复制代码
删除文档
DeleteResponse deleteResponse = elasticsearchClient.delete(d -> d
.index("products")
.id("bk-1")
);
复制代码
命名空间
在REST API文档中,数量浩繁API是按照特性(feature)来分组的,如下图:
在ES的Java库Java API Client中,上图中的各种feature被称为namespace
在ES的Java库Java API Client中,与REST API对应的的类和接口都在同一的包名co.elastic.clients.elasticsearch之下,然后再通过下一级package举行分类,这个分类与上图的feature相对应。例如索引相关的,在REST API中的feature是Index APIs,那么在Java API Client中,完整的package就是co.elastic.clients.elasticsearch.indices,这内里有索引操纵所需的哀求、响应、服务等各种类.
每一个namespace(也就是REST API中的feature),都有本身的client,例如索引相关的操纵都有索引专用的client类负责,client.indices()返回的是ElasticsearchIndicesClient对象,这是索引操纵专用的实例
Elasticsearch Java API Client客户端中的分组查询,也是属于聚合查询的一部门,所以同样使用aggregations方法,并使用terms方法来代表分组查询,field传入必要分组的字段,最后通过响应中的aggregations参数来获取,这里必要根据数据的范例来获取最后的分组效果,我这里因为统计的是数字范例,所以调用lterms()使用LongTermsAggregate来获取效果,同理:假如是String范例则调用sterms()使用StringTermsAggregate,最后打印出docCount属性即可。
SearchResponse<Test> response11 = client.search(s -> s