asticsearch: подсчитать появление агрегирования терминов на других полях - PullRequest
1 голос
/ 01 марта 2020

Я хочу посчитать, сколько раз уникальные значения (результат объединения терминов) появлялись в других полях в том же запросе. Скажем:

{
  "size": 0,
  "query": {
    "match_all": {}
  },
  "aggs": {
    "unique_products": {
      "terms": {
        "field": "products.name.keyword",
        "min_doc_count": 10
      }
    }
  }
}

Мне нужно посчитать, сколько раз каждый из key s, возвращенных в сегменте, появлялся в другом поле. Мой идеальный вывод:

  "aggregations": {
    "product_stat": {
      "key": "<product_name>"
      "sold": "<#>" #I want to know how many times the key is appeared in another field like sold
      "bought": "<#>"
    }
  }

1 Ответ

0 голосов
/ 02 марта 2020

Elasticsearch не может terms агрегировать по нескольким полям . Короче говоря, если бы они были, агрегации не были бы быстрыми.

Как следует из документации, есть два варианта:

  • использование сценарий агрегирование терминов (с потерей производительности),
  • изменение способа представления документов индексируются таким образом, чтобы можно было использовать обычное агрегирование terms.

В зависимости от структуры ваших данных и ваших сценариев использования вы можете обойтись сложным агрегированием + некоторая обработка на стороне клиента , Это можно сделать с помощью подгрупп , например, здесь , например.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...