Elasticsearch - переиндексировать весь кластер, используя шаблон для нового имени индекса - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть индекс с тысячами индексов, с 5 шардами на индекс.Я хотел бы переиндексировать их только с 1 осколком на индекс.

Существует ли в Elastic встроенное решение для переиндексации, например, всех индексов путем добавления «-reindexed» к каждому индексу?

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Вы можете сделать простое reindex, но я бы также порекомендовал вам взглянуть на Shrink Index API:

https://www.elastic.co/guide/en/elasticsearch/reference/7.0/indices-shrink-index.html

Приведенная выше документация ссылается на v7.0, но это повторяется много раз.

В вашем примере вы бы сделали что-то похожее на следующее:

Во-первых, перераспределите копии всех основных сегментов или фрагментов реплики на один узел и предотвратите любой доступ к записи в будущем, пока выполняются операции сжатия.

PUT /my_source_index/_settings
{
  "settings": {
    "index.routing.allocation.require._name": "shrink_node_name", 
    "index.blocks.write": true 
  }
}

Инициируйте операцию сжатия, очистите параметры индекса, заданные в предыдущей команде, и обновите основные настройки и параметры реплики в целевом индексе:

POST my_source_index/_shrink/my_target_index-reindexed
{
  "settings": {
    "index.routing.allocation.require._name": null, 
    "index.blocks.write": null,
    "index.number_of_replicas": 1,
    "index.number_of_shards": 1, 
    "index.codec": "best_compression"
  }
}

Обратите внимание, что выше также выделяется осколок реплики - если вы не хотите этого, убедитесь, что вы установили его на 0.

Вы бы хотели создать какой-нибудь скрипт для перебора списка исходных индексов один за другим.

1 голос
/ 12 апреля 2019

Похоже, вы хотите динамически изменять имена индексов при переиндексации.

Давайте разберемся с этим на примере:

1) Добавьте несколько индексов:

POST sample/_doc/1
{
  "test" : "sample"
}

POST sample1/_doc/1
{
  "test" : "sample"
}

POST sample2/_doc/1
{
  "test" : "sample"
}

2) Используйте Reindex API для динамического изменения индексаимена при переиндексации нескольких индексов:

POST _reindex
{
  "source": {
    "index": "sample*"
  },
  "dest": {
    "index": ""
  },
  "script": {
    "inline": "ctx._index = ctx._index + '-reindexed'"
  }
}

Приведенный выше запрос переиндексирует все индексы, начиная с sample и добавляя -reindexed в их indexNames.Это означает, что sample , sample1 и sample2 будут переиндексированы как sample-reindexed , sample1-reindexed и sample2-reindexed Все с этим одним запросом.

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...