Рубрики
Uncategorized

Обновите свое картирование и реиндекс Elasticsearch легко … ну, довольно легко

Легко обновите свои данные Elasticsearch и Reindex. Tagged с AWS, Elasticsearch, DevOps.

Если вы когда -либо работали с Elasticsearch, вам, вероятно, пришлось изменить ваше оригинальное отображение и повторно рассказать данные о своем кластере. Если вы не очень удивительны в прогнозировании функциональности поиска, которые вам нужны от Elasticsearch, и с первого раза не получите своего картирования. Если это вы, не нужно закончить чтение этого поста.

Возиться с данными в производстве-не самая забавная работа в мире, и я никогда не нашел пошаговые инструкции о том, как правильно/безопасно выполнять реиндекс. Так вот в чем этот пост. Надеюсь, это кому -то поможет!

Как всегда, проверьте это на вашем локальном, постановком или любом непроизводном кластере Elasticsearch, прежде чем предположить, что он работает. Сколько записей вы реиндексинг станут одним из определяющих факторов в том, сколько времени требуется для обработки.

Создайте свой новый индекс + картирование

Первый шаг — создать совершенно новый индекс с вашим новым картированием.

Допустим, наша Elasticsearch работает на http://127.0.0.1:9201 , наш старый индекс называется testV1 и наш новый индекс testV2 Анкет

Для краткости отображение пустое.

curl -XPUT --header 'Content-Type: application/json' http://127.0.0.1:9201/testv2 -d '
{
  "settings": {},
  "mappings": {
    "_doc": {
      "properties": {}
    }
  }
}
'

Повторите ваши данные

Вот где мы на самом деле начинаем запускать данные из вашего старого индекса в ваш новый. Одна вещь, которую нужно отметить, это wait_for_completion флаг. Когда это будет установлено на FALSE, задача будет создана и позволяет вам выпустить последующие запросы, чтобы получить обновления прогресса. Без этого команда будет просто повесить, и вы, вероятно, получите скручивание Тайм -аут и не имею возможности узнать, когда это сделано, переосмысление.

curl -XPOST --header 'Content-Type: application/json' http://127.0.0.1:9201/_reindex?wait_for_completion=false -d  '
{
  "source" : {
    "index" : "testv1"
  },
  "dest" : {
    "index" : "testv2",
    "version_type" : "external"
  }
}
'

Этот вызов вернет идентификатор задачи, который можно использовать, чтобы получить обновления статуса, например, это:

curl -XGET --header 'Content-Type: application/json' http://127.0.0.1:9201/_tasks/?pretty=true

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

curl -XGET http://127.0.0.1:9201/testv1/_count
curl -XGET http://127.0.0.1:9201/testv2/_count

Когда вы удовлетворены тем, что все выглядит хорошо, перейдите на последний шаг … создавая псевдоним и рассказываете людям, насколько вы удивительны в Elasticsearch.

Создайте псевдоним, указывающий на ваш новый индекс и удалите старый

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

curl -XPOST --header 'Content-Type: application/json' http://127.0.0.1:9201/_aliases -d  '
{
    "actions" : [
      {
        "add" : {
          "index" : "testv2",
          "alias" : "testv1"
        }
      },
    {
        "remove_index" : {
          "index": "testv1"
      }
    }
  ]
}
'

Вуаля! Ты закончил.

Кроме того, есть вещи, которые вы можете сделать, чтобы улучшить производительность переодевания. Как изменение refresh_interval и уменьшение количества копий. Независимо от того, является ли это то, что вам нужно, будет в значительной степени зависеть от размера кластера и базового оборудования.

Вот образец того, как это сделать, если вам нужно. Убедитесь, что вы запустили это до начала команды Reindex.

curl -XPUT --header 'Content-Type: application/json' http://127.0.0.1:9201/testv2/_settings -d  '
{
  "index" : {
    "refresh_interval" : "-1",
    "number_of_replicas": "0"
  }
}
'

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

Спасибо!

Оригинал: «https://dev.to/danstanhope/update-your-mapping-reindex-elasticsearch-easily-well-pretty-easily-29ih»