多词项聚合

类似于 terms 分桶聚合,您也可以使用 multi_terms 聚合来搜索多个词项。当需要按文档计数排序,或者需要按复合键上的指标聚合排序并获取前 n 个结果时,多词项聚合非常有用。例如,您可以搜索特定数量的文档(例如 1000 个),以及每个位置显示 CPU 使用率大于 90% 的服务器数量。此多词项查询将返回前若干个结果。

multi_terms 聚合比 terms 聚合消耗更多内存,因此其性能可能较慢。

多词项聚合参数

参数 描述
multi_terms 表示一个多词项聚合,它根据多个词项指定的标准将文档桶收集在一起。
size 指定要返回的桶数。默认值为 10。
order 指示桶的排序顺序。默认情况下,桶根据每个桶的文档计数进行排序。如果桶包含相同的文档计数,则可以将 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
          }
        }
      ]
    }
  }
}