Elasticsearch 多字段聚合
Elasticsearch aggregation on multi fields
这是我的 ES 索引中的文档示例:
{
"src_ip": "192.168.1.1",
"dst_ip": "192.168.1.2"
}
我想获取ip在不同文档中出现的次数(字段src_ip或dst_ip)。作为查询的结果,我想得到的是这样的聚合:
[
{"ip": "192.168.1.1", "count": 1"},
{"ip": "192.168.1.2", "count": 1"}
]
有什么想法吗?预先感谢您的帮助。
您需要使用 term aggregation,您将在其中获取组计数。
POST index_name/_search?size=0
{
"aggs": {
"src_ip_count": {
"terms": {
"field": "src_ip"
}
},
"dst_ip_count": {
"terms": {
"field": "dst_ip"
}
}
}
}
这里我假设src_ip
和dst_ip
的类型是keyword。如果不是,您需要将所有值存储为关键字类型。
这是我的 ES 索引中的文档示例:
{
"src_ip": "192.168.1.1",
"dst_ip": "192.168.1.2"
}
我想获取ip在不同文档中出现的次数(字段src_ip或dst_ip)。作为查询的结果,我想得到的是这样的聚合:
[
{"ip": "192.168.1.1", "count": 1"},
{"ip": "192.168.1.2", "count": 1"}
]
有什么想法吗?预先感谢您的帮助。
您需要使用 term aggregation,您将在其中获取组计数。
POST index_name/_search?size=0
{
"aggs": {
"src_ip_count": {
"terms": {
"field": "src_ip"
}
},
"dst_ip_count": {
"terms": {
"field": "dst_ip"
}
}
}
}
这里我假设src_ip
和dst_ip
的类型是keyword。如果不是,您需要将所有值存储为关键字类型。