Вы можете использовать aliases, чтобы абстрагироваться от реальных индексов внизу. Идея состояла бы в том, чтобы читать из псевдонима и писать вместо псевдонима. Таким образом, вы можете создать новый индекс, поменять псевдоним записи на новый индекс (чтобы процесс индексирования не был нарушен), а затем удалить старый индекс. Процесс мудр, он бы так:
Контекст: Ваш текущий location
индекс имеет location_active
псевдоним и процесс индексирования записывает в location_active
псевдоним вместо непосредственно к индексу location
.
Шаг 1: Создать новый location_112015
индекс
curl -XPUT localhost:9200/location_112015
Шаг 2: переставляем location_active
псевдоним от "старого" location
индекса в "новый" один созданный на шаге 1
curl -XPOST 'http://localhost:9200/_aliases' -d '{
"actions" : [
{ "remove" : { "index" : "location", "alias" : "location_active" } },
{ "add" : { "index" : "location_112015", "alias" : "location_active" } }
]
}'
Обратите внимание, что эта операция является атомарной, поэтому, если процесс индексирования продолжает отправлять новые документы в location_active
, это будет быть прозрачным для него, и никакие документы не будут потеряны, ошибок не будет.
Шаг 3: Удалите старый индекс
curl -XDELETE localhost:9200/location
Шаг 4: полощите и повторять так часто, как требуется
Примечание: эти операции могут быть легко выполнены с клиентской библиотекой Java как Что ж.
Какие другие процессы у вас есть, которые вносят данные в ES? – Val
Другой процесс - вставка данных в новые индексы – Andriy