Elasticsearch: проблемы с переиндексацией - в итоге обнаруживается более одного типа - PullRequest
2 голосов
/ 06 августа 2020

ES 6.8.6 Я пытаюсь переиндексировать некоторые индексы, чтобы уменьшить количество сегментов.

Исходный индекс имел тип «auth», но недавно я добавил шаблон, который использовал _do c. Когда я пробовал:

curl -X POST "localhost:9200/_reindex?pretty" -H 'Content-Type: application/json' -d'
{
  "source": {
      "index": "auth_2019.03.02"
  },
  "dest": {
      "index": "auth_ri_2019.03.02",
      "type": "_doc"

  }
}
'

, я получаю следующую ошибку:

"Rejecting mapping update to [auth_ri_2019.03.02] as the final mapping would have more than 1 type: [_doc, auth]"

Я понимаю, что у меня не может быть более одного типа, и эти типы обесцениваются в 7.x. У меня вопрос, могу ли я изменить тип во время операции переиндексации.

Я пытаюсь привести все в порядок перед переходом на 7.x.

Ответы [ 2 ]

1 голос
/ 06 августа 2020

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

Я не понимаю, почему, но добавляю тип в исходной спецификации решил проблему.

Это сработало:

curl -X POST "localhost:9200/_reindex?pretty" -H 'Content-Type: application/json' -d'
{
  "source": {
      "index": "auth_2019.03.02",
      "type": "auth"
  },
  "dest": {
      "index": "auth_ri_2019.03.02",
      "type": "_doc"

  }
}
'
0 голосов
/ 06 августа 2020

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

Из docs ,

Как _update_by_query, _reindex поддерживает сценарий, изменяющий документ.

Вы действительно можете изменить type.

Подумайте о возможностях! Просто будь осторожен; вы можете изменить: _id, _type, _index, _version, _routing

Для вашего случая добавьте


  "script": {
    "source": "ctx._type = '_doc'",
    "lang": "painless"
  }

Полный пример

{
  "source": {
      "index": "auth_2019.03.02"
  },
  "dest": {
      "index": "auth_ri_2019.03.02",
  },
  "script": {
    "source": "ctx._type = '_doc'",
    "lang": "painless"
  },
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...