Мы пытаемся перейти от Lucene к ElasticSearch.В нашей реализации Lucene мы написали наш собственный Collector, который выполняет сложные правила видимости.В методе collect () этого Collector мы проверяем, виден ли документ пользователю или нет.Если ничего не видно, мы просто игнорируем этот документ.
Мы выполняем такие запросы: Дайте мне 10 лучших документов, соответствующих некоторым критериям, и мы вернем их после применения правил видимости.
Я бы хотелдобиться того же в ElasticSearch.При запросе этого индекса я хотел бы, чтобы мой пользовательский коллектор вызывался.
Я видел пример кода для использования собственного анализатора, нормализатора и т. Д., Но ничего о наличии пользовательского сборщика.
Можно ли использовать собственный коллектор в ElasticSearch?Если да, есть какие-нибудь указатели о том, как это сделать?
Если это невозможно, лучше ли использовать следующий подход?
- Запрос на получение в нашем сервисе для получения 10 документов, соответствующих A
- Мы запрашиваем 1000 документов из поиска Eleastic, соответствующих A
- Мы выполняем наши проверки видимости в нашем сервисе для этих 1000 документов
- Если у нас есть 10 видимых документов, мы возвращаем их ввызывающий абонент
- Если у нас недостаточно видимых документов, мы запрашиваем следующие 1000 документов, соответствующих A и ElasticSearch