Количество результатов Elasticsearch для каждого фильтра

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

например, я хочу показать результаты следующим образом:

тег1 ( 100 )

тег2 ( 130 )

город1 ( 77 )

город2 ( 95 )

как я могу добиться этого с помощью Elasticsearch 6?

посмотрите, пользователь выбрал город А в качестве фильтра, теперь он видит результат поиска, отфильтрованный по городу,

теперь другие фильтры, например, категория и жанр, я хочу показать количество записей, если я также выберу категорию B или если я выберу категорию C перед самой категорией.


person mhndev    schedule 14.01.2018    source источник


Ответы (1)


Используйте следующий для фильтра с логическим запросом и gg для количества элементов на тег.

Образец документа:

{
    "id": 8,
    "title": "eight",
    "tags": [
        {"name":"tag1"}, 
        {"name":"tag2"}
    ]
}

Запрос:

{
  "size":0,
  "query" : {
      "bool" : {
          "must" : [
            { "term" : { "tags.name" : "tag2" } },
            { "term" : { "tags.name" : "tag3" } }
          ]
        }
    },
  "aggs": {
    "tags": {
      "terms": {
        "field": "tags.name"
      }
    }
  }
}
person Mohammad Akbari    schedule 15.01.2018
comment
Я обновил вопрос, мне нужно знать количество записей, если пользователь выбирает какой-либо из фильтров перед этим фильтром - person mhndev; 15.01.2018
comment
этот запрос возвращает то, что вы хотите - person Mohammad Akbari; 15.01.2018