多词项聚合
与 terms
桶聚合类似,你也可以使用 multi_terms
聚合来搜索多个词项。多词项聚合在你需要按文档计数排序,或者需要按复合键上的指标聚合排序并获取前 n
个结果时非常有用。例如,你可以搜索特定数量的文档(例如 1000 个)以及每个位置显示 CPU 使用率超过 90% 的服务器数量。此多词项查询将返回排名靠前的结果。
multi_terms
聚合比 terms
聚合消耗更多的内存,因此其性能可能会更慢。
多词项聚合参数
参数 | 描述 |
---|---|
multi_terms | 表示一个多词项聚合,它根据多个词项指定的条件将文档桶聚集在一起。 |
size | 指定要返回的桶数量。默认为 10。 |
顺序 | 指示桶的排序顺序。默认情况下,桶按照每个桶的文档计数排序。如果桶包含相同的文档计数,则 order 可以显式设置为词项值而不是文档计数。(例如,将 order 设置为“max-cpu”)。 |
doc_count | 指定每个桶中要返回的文档数量。默认情况下,返回前 10 个词项。 |
请求示例
GET sample-index100/_search
{
"size": 0,
"aggs": {
"hot": {
"multi_terms": {
"terms": [{
"field": "region"
},{
"field": "host"
}],
"order": [{
"max-cpu": "desc"
},{
"max-memory": "desc"
}]
},
"aggs": {
"max-cpu": { "max": { "field": "cpu" } },
"max-memory": { "max": { "field": "memory" } }
}
}
}
}
示例响应
{
"took": 118,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 8,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"multi-terms": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": [
"dub",
"h1"
],
"key_as_string": "dub|h1",
"doc_count": 2,
"max-cpu": {
"value": 90.0
},
"max-memory": {
"value": 50.0
}
},
{
"key": [
"dub1",
"h1"
],
"key_as_string": "dub|h1",
"doc_count": 2,
"max-cpu": {
"value": 90.0
},
"max-memory": {
"value": 40.0
}
},
{
"key": [
"dub",
"h2"
],
"key_as_string": "dub|h2",
"doc_count": 2,
"max-cpu": {
"value": 70.0
},
"max-memory": {
"value": 90.0
}
},
{
"key": [
"iad",
"h2"
],
"key_as_string": "iad|h2",
"doc_count": 2,
"max-cpu": {
"value": 50.0
},
"max-memory": {
"value": 50.0
}
},
{
"key": [
"iad",
"h1"
],
"key_as_string": "iad|h1",
"doc_count": 2,
"max-cpu": {
"value": 15.0
},
"max-memory": {
"value": 20.0
}
}
]
}
}
}