Обновление ignore_above для поля ключевых слов - PullRequest
0 голосов
/ 20 июня 2019

Существующее сопоставление:

"call": {
      "type": "text",
      "norms": false,
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256
        }
      }
    }

Обновление:

PUT myIndex/_mapping
{
    "properties": {
      "call": {
        "type": "text",
        "fields": {
          "keyword":{
            "type": "keyword",
            "ignore_above": 500
          }
        }
      }
    }
  }

И я получаю эту ошибку:

  {
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Mapper for [call] conflicts with existing mapping:\n[mapper [call] has different [norms] values, cannot change from disable to enabled]"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "Mapper for [call] conflicts with existing mapping:\n[mapper [call] has different [norms] values, cannot change from disable to enabled]"
  },
  "status": 400
}

Что я делаю не так?

1 Ответ

1 голос
/ 21 июня 2019

Вы также должны включить свойство "nors" в свое обновление. Вы установили значение false в исходном отображении. Если его не использовать, Elasticsearch попытается установить для него значение по умолчанию, которое является истинным. Включение поля норм после его отключения невозможно. Вы должны создать новый индекс, если хотите этого.

Вот правильное обновление:

PUT myIndex/_mapping
{
    "properties": {
      "call": {
        "type": "text",
        "norms": false,
        "fields": {
          "keyword":{
            "type": "keyword",
            "ignore_above": 500
          }
        }
      }
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...