Мы используем 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 в этот индекс?