ElasticSearch:对过滤的唯一记录进行汇总

时间:2017-04-14 03:39:15

标签: elasticsearch

我对ElasticSearch中的问题感到震惊。

我正在尝试从过滤后的数据集中获取唯一文档,并在其上进行聚合。

我们的数据集看起来像这样...... ID对象Property1 Property2 12 123 Test1 Fest2 23 234 Test3 Fest4 5 123 Test1 Fest2 55 123 Test2 Fest4 3 234 Test2 Fest2

我想基于property2过滤设备,并在唯一过滤记录的property1上聚合(分组依据)。 有人可以帮我吗?

过滤并获取唯一记录。

{
 "size": 0,
 "query": { "match": { "Property2": "Fest2" }},
"aggs": {
    "Unique-Object": {
      "terms": {
        "field": "object.keyword",
        "size": 20
},
"aggs": {
    "top_uids_hits": {
          "top_hits": {
            "sort": [
              {
                "_score": {
                  "order": "desc"
                }
              }
            ],
            "size": 1
          }
        }
      }
    }
    }
}'

我想在上面的DSL输出中通过Property1进行分组......有人会对此有所了解吗?

按Property1分组

"aggs": {
"Property1_count": {
"terms": {
"field": " Property1.keyword"
}

由于 Arun S

1 个答案:

答案 0 :(得分:0)

我认为这应该是你的查询。检查使用此,agg内聚: - 使用基数link

  {
    "_source":false,
    "query": {
        "match": {
            "Property2": "xxxx"
        }
    },
    "aggregations": {
        "byProperty1": {
            "terms": {
                "field": "property1"
            },
            "aggs": {
                "byId": {
                    "cardinality": {
                        "field": "id"
                    }
                }
            }
        }
    }
}

对于java实现,请检查我的answer。 在多个字段link上查看此问题组。