Можно ли преобразовать запрос эластичного поиска в нечто, что может применить ту же логику фильтрации к Hadoop? - PullRequest
0 голосов
/ 30 августа 2018

У нас есть архитектура, которая использует и эластичный поиск, и hadoop для задач почти в реальном времени и пакетной обработки соответственно. Мы принимаем данные и записываем их в обе системы, поэтому синхронизация уже обеспечена, при условии некоторого отставания в хранении строк в HDFS.

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

Один из наших пакетных процессов, который мы переходим в HDFS, чтобы выполнить полный экспорт всех строк, соответствующих запросу эластичного поиска, должен генерировать те же результирующие данные, что и запрос, отправляемый в эластичный поиск, но избегать вызова эластичного поиска (как это делается в es -hadoop), чтобы избежать снижения производительности нашего кластера эластичного поиска.

Существует ли какой-либо универсальный инструмент или процесс преобразования сложного запроса эластичного поиска в нечто, что может применять ту же логику фильтрации в hadoop? Нам не нужно рассматривать агрегации или что-то в этом роде, просто фильтрацию запросов.

1 Ответ

0 голосов
/ 30 августа 2018

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

Например: if ((name == Jane && age> 18) || (name == John && age <18)), будет представлен как OR (AND (EQ (имя: Jane), GT (age) : 18))) / И), (И (EQ (имя: John), LT (возраст:. 18))) / И) / ИЛИ) </p>

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

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