调用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对象
image
我们可以使用.lterms.buckets对象获取到这个结果

        LongTermsAggregate lterms = bankTerm.lterms();
        Buckets<LongTermsBucket> buckets = lterms.buckets();

avg也一样 avg中有个value结果
可以这样获取到value

ageAvg.avg().value();
posted @   RainbowMagic  阅读(239)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示