Elasticsearch использует скользящий индекс для изменяемых документов - PullRequest
0 голосов
/ 23 января 2020

Мы используем AWS ES 6.0.
На данный момент у нас есть 1 большой индекс (5 основных, 2 реплики, размер сегмента ~ 30 ГБ), в котором хранятся данные за 6 месяцев, которые вручную удаляются после истечения срока действия документа.
Мы создаем идентификатор документа с нашей стороны.
Документы обновляются после создания через update_by_query, который принимает безболезненный сценарий. Сценарий выбирает документ, добавляет его в поле со значением массива и затем индексирует его.
например.
Старый do c:

{
  ...
  "stateHistory" : [
      {"name" : "CREATED", "timestamp": 23/01/2020,10:09:29}
   ] 
}

Новый do c:

{
  ...
  "stateHistory" : [
      {"name" : "CREATED", "timestamp": 23/01/2020,10:09:29},
      {"name" : "READY", "timestamp": 23/01/2020,10:29:29}
   ] 
}

Теперь мы хотим использовать 15-дневные скользящие индексы, так как большинство документов обновляются / запрашиваются за этот период.
Идея состоит в том, чтобы использовать один псевдоним записи, указывающий на самый последний индекс, и иметь псевдоним чтения, указывающий на все 12 индексов (на 6 месяцев).
Проблема в том, что, скажем, do c с идентификатором 1 был проиндексирован в index-1, а теперь индекс был пролонгирован и создан новый индекс index-2. Таким образом, обновление do c с идентификатором 1 не найдет do c в index-2 и, следовательно, будет воссоздано новое do c в index-2. Это означает, что у нас одинаковые do c с идентификатором 1 в нескольких индексах.

Q1. Не подходит ли скользящий индекс по времени для таких шаблонов, где документы могут обновляться после создания?

Q2. Может ли update_by_query читать из прочитанного псевдонима, чтобы получить существующий do c и записать в индекс, который фактически имел do c, вместо записи через псевдоним записи?

Q3. Является ли единственным выходом получение документа для получения через псевдоним чтения и просмотр индекса, в котором он существует, а затем запись обновленного файла do c в этот индекс?

...