调用es api
进行检索
如文档所示
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());
}
使用index指定indexquery指定搜索条件 product.class 指定实体类
如以下 搜索全部
bankSearchResponse = elasticsearchClient.search((e) -> {
return e.index("bank")
.query((q) -> {
return q.matchAll(new MatchAllQuery.Builder().build());
})
}, Bank.class);
可以调用bankSearchResponse.hits().hits()获取检索结果
聚合检索
首先组装一个聚合规则 和直接向es发送请求一样 可以对上一次查询的结果进行再次聚合在之后再指定一个aggregations
Map<String, Aggregation> aggs = new HashMap<>();
aggs.put("bankTerm", Aggregation.of((c) -> {
return c.terms(TermsAggregation.of((t) -> {
return t.field("age");
})).aggregations("ageAvg", Aggregation.of((t) -> {
return t.avg((v) -> {
return v.field("balance");
});
}));
}));
获取聚合结果
每个聚合规则都封装了一个结果对象
如terms在结果中有个buckets对象
我们可以使用.lterms.buckets对象获取到这个结果
LongTermsAggregate lterms = bankTerm.lterms();
Buckets<LongTermsBucket> buckets = lterms.buckets();
avg也一样 avg中有个value结果
可以这样获取到value
ageAvg.avg().value();
虽然道路是曲折的,但前途是光明的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律