Фильтрация при двойном агрегировании elasticsearch

134
18 марта 2019, 22:50

Я делаю вот такую агригацию:

{
"aggs": {
    "characteristics": {
        "terms": {
            "field": "product_char.char_id"
        },
        "aggs": {
            "value": {
                "terms": {
                    "field": "product_char.value.keyword"
                }
            }
        }
    }
}
}

И хочу получить уникальное значение конкретной характеристики, но вместо этого в value я получаю все возможные значения всех характеристик вместе взятых. Как сделать так, что бы в каждой уникальной characteristics был свой набор уникальных value

Answer 1

Крч если кому надо)) делаете маппинг, ставите у product_char тип nested (это если у вас как у меня массив объектов внутри product_char, если один объект то и так должно всё работать). Код аггригации для nested такой:

{
 "aggs": {
   "characteristics": {
     "nested": {
       "path": "product_char"
     },
     "aggs": {
       "char_ids": {
         "terms": {
           "field": "product_char.id",
                     "size": 1000000
         },
         "aggs": {
           "values": {
             "terms": {
               "field": "product_char.value.keyword",
               "size": 1000000
             }
           }
         }
       }
     }
   }
 }
}

p/s Спасибо комьюнити, ELASTIC СДЕЛАЙ НОРМ ДОКУМЕНТАЦИЮ!!

READ ALSO
Curl Ответ сервера 0

Curl Ответ сервера 0

такой вопросЕсть база с номерами на 400 тыс товаров

136
регулярка для телефона

регулярка для телефона

Ищу по регвыражению рос

128
YII2 как передать запрос посредством AJAX

YII2 как передать запрос посредством AJAX

Нужно передать массив идшников посредством AJAX в php, но в консоли вылезает ошибка 400 (неверные параметры)

140
Перевернуть строку в PHP

Перевернуть строку в PHP

Как перевернуть строку? Было Привет - стало тевирПСтандартную функцию не предлагать - strrev() не работает с кодировкой utf-8

170