gpt4 book ai didi

elasticsearch - 如何使用 Scroll on Elasticsearch 聚合?

转载 作者:行者123 更新时间:2023-11-29 02:44:47 40 4
gpt4 key购买 nike

我正在使用 Elasticsearch 5.3。我正在汇总一些数据,但结果太多,无法在单个查询中返回。我尝试使用 size = Integer.MAX_VALUE; 但事实证明即使那样也更少。在 ES 搜索 API 中,有一个方法 scroll通过搜索结果。 org.elasticsearch.search.aggregations.AggregationBuilders.terms 聚合器是否有类似的功能?我该如何使用它?搜索滚动 API 可以用于聚合器吗?

最佳答案

在 ES 5.3 中,你可以 partition术语存储桶并根据请求检索一个分区。

例如,在下面的查询中,您可以请求将存储桶分成 10 个分区,并且只返回第一个分区。与一次检索所有存储桶相比,它返回​​的数据少约 10 倍。

{
"size": 0,
"aggs": {
"my_terms": {
"terms": {
"field": "my_field",
"include": {
"partition": 0,
"num_partitions": 10
},
"size": 10000
}
}
}
}

然后您可以通过将分区增加到 1 等来发出第二个请求

{
"size": 0,
"aggs": {
"my_terms": {
"terms": {
"field": "my_field",
"include": {
"partition": 1, <--- increase this up until partition 9
"num_partitions": 10
},
"size": 10000
}
}
}
}

要在您的 Java 代码中添加它,您可以这样做:

TermsAggregationBuilder agg = AggregationBuilders.terms("my_terms");
agg.includeExclude(new IncludeExclude(0, 10));

关于elasticsearch - 如何使用 Scroll on Elasticsearch 聚合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43343036/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com