gpt4 book ai didi

elasticsearch - Elasticsearch 限制聚合的记录

转载 作者:行者123 更新时间:2023-12-03 01:53:46 25 4
gpt4 key购买 nike

我正在运行带有聚合的 Elasticsearch 查询,我打算将其限制为100条记录。问题是,即使我应用“大小”过滤器,也不会影响聚合。

GET /index_name/index_type/_search
{
"size":0,
"query":{
"match_all": {}
},
"aggregations":{
"courier_code" : {
"terms" : {
"field" : "city"
}
}
}}

结果集是
{
"took": 7,
"timed_out": false,
"_shards": {
"total": 10,
"successful": 10,
"failed": 0
},
"hits": {
"total": 10867,
"max_score": 0,
"hits": []
},
"aggregations": {
"city": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "Mumbai",
"doc_count": 2706
},
{
"key": "London",
"doc_count": 2700
},
{
"key": "Patna",
"doc_count": 1800
},
{
"key": "New York",
"doc_count": 1800
},
{
"key": "Melbourne",
"doc_count": 900
}
]
}
}
}

如您所见,对限制要执行聚合的记录没有影响。是否有过滤器,例如说Elastic Search中的前100条记录。

最佳答案

elasticsearch中的搜索操作在queryfetch两个阶段中执行。在第一阶段,elasticsearch从所有分片中获取结果,并对它们进行排序,并确定应返回哪些记录。然后,在第二阶段检索这些记录。 size参数控制响应中返回给您的记录数。在elasticsearch实际知道需要检索哪些记录之前,在第一阶段执行聚合,并且始终对搜索中的所有记录执行聚合。因此,不可能通过结果总数来限制它。如果要限制聚合执行的范围,则需要限制搜索查询,而不是更改检索参数。例如,如果您向搜索查询添加一个仅包含去年记录的过滤器,则将对该过滤器执行汇总。

也可以使用 terminate_after 参数限制在上每个分片上分析的记录的数量,但是您将无法控制要包含哪些记录以及哪些记录不包含在结果中,因此此选项很可能不是你想要的。

关于elasticsearch - Elasticsearch 限制聚合的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38249958/

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