2017-01-27 10 views
0

Какова наилучшая практика для переиндексации индекса упругого поиска? This post имеет несколько шагов, которые включают остановку индексатора логсташей перед переиндексированием индекса, но это не вариант для меня как своего производственного сервера.Повторное индексирование индекса elasticsearch - ELK

У меня возникла проблема, когда в индексе не было полей * .raw, из-за отсутствия шаблона сопоставления по умолчанию. Я использовал шаблон сопоставления из Elasticsearch, найденный here, и настроил мой кластер ES, чтобы использовать его, но, я думаю, он будет использоваться только при создании нового индекса или при явном переиндексировании существующего индекса.

Также /_template?pretty вернул пустой ответ, но после добавления вышеупомянутого шаблона /_template?pretty раскрывает новый шаблон, но будет ли новый индекс, который будет создан, использовать этот новый шаблон автоматически? Или мне нужно настроить ES, явно прося его использовать?

Я бы очень признателен за помощь здесь.

ответ

1

Лучший способ сделать это IMO - иметь псевдоним, указывающий на ваш фактический индекс. (https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html), что-то вроде my-index-alias указывая на my-actual-index-20170101

POST /_aliases 
{ 
    "actions" : [ 
     { "add" : { "index" : "my-actual-index-20170101", "alias" : "my-index-alias" } } 
    ] 
} 

При запросе (или добавить питания) в индекс, вы всегда использовать имя псевдонима.

Если вам нужно переиндексировать, вы переиндексируете на другой индекс (my-actual-index-20170127 на пример), а когда выполняется повторная проверка, вы обновляете псевдоним, указывая на новый индекс.

POST /_aliases 
{ 
    "actions" : [ 
     { "remove" : { "index" : "my-actual-index-20170101", "alias" : "my-index-alias" } }, 
     { "add" : { "index" : "my-actual-index-20170127", "alias" : "my-index-alias" } } 
    ] 
} 

Это позволит вам переиндексировать индекс без изменения кода/времени простоя.

Теперь о фактической проблеме с переиндексированием. Я использовал приложение узла elasticsearch-reindex с большим успехом (https://www.npmjs.com/package/elasticsearch-reindex).

Его использование легко:

после установки с НПМ (npm install -g elasticsearch-reindex), вы можете просто запустить

elasticsearch-reindex -f http://localhost:9200/my-actual-index-20170101/{type of documents} -t http://localhost:9200/my-actual-index-20170127