结合唯一字段的Elasticsearch最大字段

时间:2019-12-02 09:52:23

标签: elasticsearch elasticsearch-6 elasticsearch-7

我有一个包含两个字段的索引:

  • 名称:uuid
  • 版本:长

我现在只想统计名称版本最高的文档(在非常大的索引[1百万+个条目]上)。例如用以下文件查询索引:

{name="a", version=1} 
{name="a", version=2}
{name="a", version=3}
{name="b", version=1}

...将返回:

count=2

这有可能吗?我找不到针对此特定问题的解决方案。

1 个答案:

答案 0 :(得分:1)

您正在有效地描述一系列不同的名称,您可以使用cardinality aggregation来完成。

请求:

GET test1/_search
{
    "aggs" : {
        "distinct_count" : {
            "cardinality" : {
                "field" : "name.keyword"
            }
        }
    },
    "size": 0
}

响应:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 4,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "distinct_count" : {
      "value" : 2
    }
  }
}