Хорошо ,asticsearch не выполняет объединение для вас.Таким образом, вы должны присоединиться и индексировать целые данные во время индексации.
Я подумал, что это может быть распространенный сценарий, и для этого может быть решение, о котором я не знаю ..
Я думаю следующее:
client => logstash => elasticsearch
(в отличие от client = >asticsearch)
- когда клиент индексирует документ, он отправляется в logstash, например:
user-id, item-id, purchase-time
. logstash просматривает поле и находит предопределенные поля для объединения.
с учетом user-id
, извлечение user
из user-index
.
с учетом item-id
, получениеitem
из item-index
.
добавить поля user
и item
к записи о покупке.
logstash индексирует документ (user-id, user, item-id, item, purchase-time
) в закупочный индекс
Итак,
- настроить ввод http для logstash
- использовать плагин фильтра эластичного поиска для извлечения данных из других индексов
использовать плагин вывода эластичного поиска для индексирования документа
создатьотдельный файл logstash.conf для каждого сценария, в котором вы хотите join
Есть ли лучшая альтернатива?