弹性搜索 - 按索引聚合组

时间:2015-12-16 05:19:39

标签: elasticsearch lucene

我有一些具有相同数据类型的索引(相同的字段)。有没有办法在每个索引中获得某个字段的最大值(例如)?

假设我有以下数据:

index1.some_type:
    {"some_field": 23},
    {"some_field": 14},
    {"some_field": 43}

index2.some_type:
    {"some_field": 11},
    {"some_field": 65},
    {"some_field": 3}

我希望第一个索引的最大值为43,第二个索引的最大值为65。弹性搜索允许在一个聚合查询中执行此类操作吗?

1 个答案:

答案 0 :(得分:4)

是的,您肯定可以使用_index meta field中的特殊terms aggregation,然后使用some_field上的max aggregation,如下所示:

curl -XPOST localhost:9200/_search -d '{
  "size": 0,
  "aggs": {
    "byindex": {
      "terms": {
        "field": "_index"
      },
      "aggs": {
        "max_value": {
          "max": {
            "field": "some_field"
          }
        }
      }
    }
  }
}'