Elasticsearch фильтр данных по значению выбранных агрегатов - PullRequest
0 голосов
/ 27 сентября 2018

Я должен искать в коллекции профилей, каждый профиль имеет firstName, middleName и lastName, ключ пола.

Я добавил агрегирование терминов по полу, которое будет возвращать счет для мужчин и женщин.Я использую простой поиск (простой текст), чтобы найти по всему документу.Когда я использую запрос в качестве параметра строки запроса, объект запроса из тела сообщения не работает.Я хотел показать список профилей, возвращаемых простым текстовым запросом, и пользователь мог выбрать гендерный фильтр для фильтрации результата.

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

Я пытался с глобальной агрегацией, но он игнорирует запрос.Я пытался с фильтрами в агрегации, но это фильтрация агрегации.

Например:

Если http://localhost:9200/profiles/_search?q=dlinx с телом

{
    "aggs": {
       "Gender": {
        "terms": {
          "field": "gender"
        }
      }
    }
}

возвращает результат агрегации как мужской: 10,женщина: 15, а потом считать 25После применения гендерного фильтра в качестве мужчины, я ожидаю, что результат будет для мужчины: 10, для женщины: 15, количество документов равно 15

1 Ответ

0 голосов
/ 27 сентября 2018

Вы ищите пост-фильтры = D

Фильтры, которые применяются только к фильтрам попаданий, после того, как подсчет агрегаций был "выполнен".

Вот документация

Фильтр post_filter применяется к поисковым запросам в самом конце поискового запроса после того, как агрегаты уже рассчитаны

Ваше тело _search должно быть примерно такимчто:

GET profiles/_search
{
  "query": {
    "match": {
      "<yourfield>": "dlinx"
    }
  },
  "aggs": {
    "Gender": {
      "terms": {
        "field": "gender"
      }
    }
  },
  "post_filter": {
    "term": {
      "gender": "<theselectedGender>"
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...