弹性搜索中使用的字段的聚合

时间:2016-07-13 18:27:09

标签: elasticsearch aggregation

我想制作一个单个查询,它会告诉我我的映射中的哪些字段正在用于特定用户。这似乎是你应该能够用聚合做的事情,但我在如何绘制空白。

因此,如果我的地图包含userfield1field2field3。我想知道哪些实际出现在给定用户的文档中。我希望在12个文档中使用field1,在20个文档中使用field2,在用户field3的5个文档中使用x

1 个答案:

答案 0 :(得分:1)

如果我理解了这个要求,就应该这样做:

{
  "size": 0,
  "query": {
    "term": {
      "user": {
        "value": "x"
      }
    }
  }, 
  "aggs": {
    "field1_count": {
      "filter": {
        "exists": {
          "field": "field1"
        }
      }
    },
    "field2_count": {
      "filter": {
        "exists": {
          "field": "field2"
        }
      }
    },
    "field3_count": {
      "filter": {
        "exists": {
          "field": "field3"
        }
      }
    }
  }
}