ES不是我工作主流,有一个行为我无法纠正。我有一个相当简单的聚合查询:
GET /my_index/_search
{
"size": 0,
"query": {
"bool": {
"must": [
{
"match": {
"request_type": "some_type"
}
},
{
"match": {
"carrier_name.keyword": "some_carrier"
}
}
]
}
},
"aggs": {
"by_date": {
"terms": {
"field": "date",
"order": {
"_term": "asc"
}
},
"aggs": {
"carrier_total": {
"sum": {
"field": "total_count"
}
}
}
}
}
}
我对https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html的理解是,并不是所有文档都包含在聚合中。实际上,根据查询部分,我确实在结果中看到“sum_other_doc_count”:值大于零。
我的问题:是否有一种方法来构建搜索,以便包含所有文档?文档的数量相当小,通常在1k以下,
先谢谢你Reuven
2条答案
按热度按时间093gszye1#
根据该文件,
size
默认为10from
+size
不能大于index.max_result_window
索引设置,默认值为10,000。在您的情况下,文档相当小,接近1k,因此1k的结果可以很容易地检索。
可以设置size参数来定义应该从整个术语列表中返回多少个术语桶。默认情况下,协调搜索过程的节点将请求每个碎片提供其自己的最大大小术语桶,并且一旦所有碎片响应,它将把结果减少到最终列表,然后返回给客户端。
因此,需要请求在字段日期中包含前1000个文档。
...
...
请求的大小越大,结果越准确,但计算最终结果的成本也越高
要了解更多信息,请参阅official doc
isr3a4wc2#
将terms agg的
size
从默认值10
增加到一个稍大的数字: