Повторное индексирование Elasticsearch завершается с ошибкой _version

Я использую Elasticsearch версии 5.5.

У меня есть индекс A с отображением:

{
  "myobj": {
    "enabled": false
}

Я создал индекс B с отображением:

{
  "myobj": {
    "_all": {"enabled": false},
    "properties": {
      "mykey": {"type": "keyword"}
    }
  }
}

Когда я вызываю reindex api с телом:

{
  "source": {
    "index": "a"
  },
  "dest": {
    "index": "b"
  }
}

Я получаю сообщение об ошибке: Cannot generate dynamic mappings of type [_version] for [_version]

Вот тела запросов переиндексации, которые я пробовал:

{
  "source": {
    "index": "a"
  },
  "dest": {
    "index": "b",
    "version_type": "internal"
  }
}

==> Cannot generate dynamic mappings of type [_version] for [_version]


{
  "source": {
    "index": "a"
  },
  "dest": {
    "index": "b",
    "version_type": "external"
  }
}

==> Cannot generate dynamic mappings of type [_version] for [_version]


{
  "source": {
    "index": "a"
  },
  "dest": {
    "index": "b"
  },
    "script": {
      "inline": "ctx._version = ctx._source.remove(\"_version\")"
    }
}

==> [myobj][1]: version conflict, current version [-1] is different than the one provided [1507030478]


Что я делаю не так и как мне переиндексировать эти документы?

ИЗМЕНИТЬ

С тех пор я пытался добавить "conflicts": "proceed", в результате чего никакие документы не переиндексировались.

Я также добавил "index.mapper.dynamic": false в настройки индекса B без заметных изменений в результатах.


person siltalau    schedule 31.01.2018    source источник
comment
Пробовали ли вы с конфликтами: продолжайте,   -  person prasad kp    schedule 31.01.2018
comment
Это не помогло.   -  person siltalau    schedule 01.02.2018


Ответы (1)


В ES есть зарезервированные поля, которые нельзя напрямую переиндексировать, например _id, _version или _index. (и устаревший _type)

Попробуйте это тело в вашем reindex, чтобы удалить эти зарезервированные поля.

{
    'source': { ... },
    'dest': { ...  },
    "script": {
        'inline': 'ctx._source.remove("_id");ctx._source.remove("_version");'
    }

}
person est    schedule 12.01.2021