Как получить агрегацию для динамических / неизвестных полей в ElasticSearch 6.x? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть список документов, как показано ниже.Мне нужны агрегаты для имен полей (например, цвета, размера и т. Д.), Которые я не знаю во время запроса, потому что имена полей очень разнообразны.Как я могу получить агрегаты для этих полей?

[
  {
    "name": "Test product 1",
    "features": [
      {
        "name": "color",
        "value": "Blue"
      },
      {
        "name": "size",
        "value": "M"
      },
      {
        "name": "height",
        "value": 124,
      }
    ]
  },
  {
    "name": "Test product 1",
    "features": [
      {
        "name": "color",
        "value": "Red"
      },
      {
        "name": "wifi",
        "value": "ac/g/n"
      }
    ]
  }
]  

Я ищу что-то, как показано ниже.Обратите внимание, что "features.name => value" не является действительной / действительной нотацией в ES.

GET /_search
{
    "aggs" : {
        "features" : {
            "terms" : { "field" : "features.name => value" }
        }
    }
}

и ответом, подобным этому

{
    ...
    "aggregations" : {
        "genres" : {
            "doc_count_error_upper_bound": 0, 
            "sum_other_doc_count": 0, 
            "buckets" : {"color": [ 
                      {
                        "key" : "red",
                        "doc_count" : 6
                       },
                       {
                       "key" : "blue",
                       "doc_count" : 3
                       },
                     ],
                {"size": [ 
                      {
                        "key" : "M",
                        "doc_count" : 6
                       },
                ],
                {"wifi": [ 
                      {
                        "key" : "ac/g/n",
                        "doc_count" : 1
                       },
                ]
        }
    }
}
...