#algorithm #architecture #full-text-search #elasticsearch
#алгоритм #архитектура #полнотекстовый поиск #elasticsearch
Вопрос:
Я создаю систему, в которой у пользователей есть определенные динамические роли, которые предоставляют им доступ к некоторым ресурсам (т. Е. метадокументам). Эти документы META индексируются с помощью эластичного поиска.
Я могу выполнять свои запросы без проблем.
Теперь мне нужно учитывать роли: если я добавлю роли, которым разрешено просматривать данный документ при индексации документов, я затем отфильтрую свой запрос в соответствии с определенной ролью и верну результаты.
Это нормально, но если роль меняется, мне нужно переиндексировать все мои документы.
Если я сделаю это динамически на стороне сервера при получении результата эластичного поиска, это может также сработать, но будет потреблять некоторый процессор и пропускную способность, плюс это может быть проблемой с фасетным поиском и разбиением на страницы.
Как бы вы решили такую проблему? Какое решение является наиболее подходящим?
Комментарии:
1. Интересная проблема! Я предполагаю, что это частный случай более общей проблемы выполнения запросов, которые сочетают полнотекстовый поиск с аспектами отношений. Конечно, некоторые реляционные базы данных уже поддерживают быстрый полнотекстовый поиск.
2. Как часто меняются роли? Сколько времени требуется для индексации? Влияет ли повторная индексация на возможность поиска?
3. На самом деле, после того, как я увидел, что ES поддерживает массовую вставку для более быстрой индексации, переиндексация будет жизнеспособным решением, учитывая, что роли меняются не так часто.
Ответ №1:
Как насчет того, чтобы поместить прокси перед вами в Elastic Search, который удалит все нежелательные результаты и вообще не будет заботиться о ролях поиска?