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

Aggregation of fields in use in elastic search

我想做一个单一查询,它将告诉我映射中的哪些字段正在用于特定用户。这似乎是您应该能够使用聚合来完成的事情,但我对如何做一无所知。

因此,如果我的映射包含 userfield1field2field3。我想知道其中哪些实际出现在给定用户的文档中。我原以为用户 x.

在 12 个文档中使用 field1,在 20 个文档中使用 field2,在 5 个文档中使用 field3

如果我很好地理解了需求,应该这样做:

{
  "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"
        }
      }
    }
  }
}