弹性搜索中的聚合属性

时间:2019-04-04 13:03:54

标签: elasticsearch

我有一个带有可选属性的索引条目。因此,例如,我有这样的条目

{
  "id":1
  "field1":"XYZ"
},
{
  "id":2
  "field2":"XYZ"
},
{
  "id":3
  "field1":"XYZ"
}

我想进行汇总,以告诉我填充了field1和field2的条目有多少。

预期结果应该是:

{
"field1":2
"field2":1
}

elasticsaerch甚至可以做到吗?

1 个答案:

答案 0 :(得分:2)

是的,您可以这样做:

POST myindex/_search
{
  "size": 0,
  "aggs": {
    "field_exists": {
      "filters": {
        "filters": {
          "field1": {
            "exists": {
              "field": "field1"
            }
          },
          "field2": {
            "exists": {
              "field": "field2"
            }
          }
        }
      }
    }
  }
}

您将得到一个这样的答案:

"aggregations" : {
  "field_exists" : {
    "buckets" : {
      "field1" : {
        "doc_count" : 2
      },
      "field2" : {
        "doc_count" : 1
      }
    }
  }
}