我的查询是嵌套聚合
aggs: {
src: {
terms: {
field: "dst_ip",
size: 1000,
},
aggs: {
dst: {
terms: {
field: "a_field_which_changes",
size: 2000,
},
},
},
},
查询运行的典型文档位于下方(映射都是keyword
类型的<)>
{
"_index": "honey",
"_type": "event",
"_id": "AWHzRjHrjNgIX_EoDcfV",
"_score": 1,
"_source": {
"dst_ip": "10.101.146.166",
"src_ip": "10.10.16.1",
"src_port": "38",
}
},
我实际上有两个查询,一个接一个。它们的不同之处在于a_field_which_changes
的值,在一个查询中为"src_ip"
,在另一个查询中为"src_port"
。
在第一个查询中,所有结果都很好。聚合是1个元素大,并且桶指定该元素与
匹配的内容{
"key": "10.6.17.218", <--- "dst_ip" field
"doc_count": 1,
"dst": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "-1", <--- "src_port" field
"doc_count": 1
}
]
}
},
另一个查询会产生两种不同的结果:
{
"key": "10.6.17.218",
"doc_count": 1,
"dst": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": []
}
},
{
"key": "10.237.78.19",
"doc_count": 1,
"dst": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "10.12.67.89",
"doc_count": 1
}
]
}
},
第一个结果是有问题的:它没有给出桶的细节。它与另一个没有什么不同,但不知何故细节都缺失了。
为什么会这样,最重要的是 - 如何强制Elasticsearch显示存储桶的详细信息?
documentation详细介绍了如何干扰聚合,但我找不到任何相关内容。