Фильтрация данных из поиска elasti c на основе mongodb - PullRequest
2 голосов
/ 14 июля 2020

У меня есть список элементов в моем ElasticSearch. Пользователь вводит запрос, и я получаю результаты поиска elasti c. Теперь у меня есть некоторые пользовательские настройки, хранящиеся в mongodb, на основе которых я хочу отфильтровать результаты поиска elasti c.

  1. Предположим, я получил список элементов (item_ids) из Elasticsearch.

  2. Пн go БД имеет следующую схему. id, user_id, item_id

  3. Я выбрал эту схему MongoDB, потому что у пользователя может быть очень большой список элементов (в порядке миллионов), которые он не хочет видеть в результатах.

Как добиться этого с помощью масштабирования? Мне нужно изменить мою схему?

1 Ответ

1 голос
/ 14 июля 2020

Для этого вам следует использовать фильтрацию elasticsearch, вы можете включить критерии фильтрации в свой запрос ES, что уменьшит количество возвращаемых результатов, без которых

  1. Вы должны вернуть огромный набор данных из ES а затем выполните фильтрацию в MongoDB, что является двухэтапным процессом и дорогостоящим как на стороне ES, так и на стороне mon go.
  2. С фильтрами на ES он будет возвращать меньше данных, что позволит избежать дополнительной пост-обработки на mongoDB и фильтры выполняются первыми и по умолчанию кэшируются на стороне elasticsearch, поэтому вам не нужно дополнительное решение для кеширования, такое как redis et c.

Обратитесь контекст фильтра и запроса и из того же официальный do c, информация о кеше фильтров.

Elasticsearch автоматически кэширует часто используемые фильтры для повышения производительности.

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