2017-01-24 16 views
1

У меня есть источник данных, который создаст большое количество записей, которые я планирую хранить в ElasticSearch. Источник создает две записи для одного документа в ElasticSearch:Обновление существующих документов в ElasticSearch (ES) при использовании API опроса

  • «инициализации» часть, которая записывает инициализации времени и другие детали под случайным ключом в ES
  • «Готово» часть, которая содержит основной данные и обновляет первоначально созданный документ (объединяется) в ES под случайным ключом init.

мне нужно будет использовать индексы, основанные на времени в ElasticSearch, с псевдонимом, указывающий на фактический индекс, с помощью rollover index. Для обновлений я буду использовать update API для объединения init и завершения.

Вопрос: Если документ инициализации со случайным ключом не находится в текущем индексе (но в более старом, который уже перевернулся), он будет обновлять его, используя его ключ успешно выполнить? Если нет, то какова наилучшая практика для обновления?

ответ

0

После некоторого молчания я решил проверить его.

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

Один из способов решения этого вопроса - выполнить поиск в последних двух (или более необходимых) индексах и выяснить, какое имя индекса не для псевдонимов использовать для обновления.

Другое решение, которое я предпочитаю, заключается в том, чтобы избежать использования опрокидывания, но вычислить имя индекса из поля требуемой даты нашего документа и создать новый индекс из приложения, используя шаблон для определения соответствия. Таким образом, поиск источников и воспроизведение документов в порядке приведет к тому же индексам.