Обновить параметр индекса сопоставления существующего поля в Elasticsearch - PullRequest
0 голосов
/ 04 августа 2020

У меня есть сопоставление

{
  "test" : {
    "mappings" : {
      "properties" : {
        "description" : {
          "type" : "text"
        },
        "location" : {
          "type" : "keyword",
          "index" : false
        },
        "title" : {
          "type" : "text"
        }
      }
    }
  }
}

, и я хочу обновить параметр index поля location до true

Я пытаюсь

PUT /test/_mapping
{
  
    "properties": {
        "location": { 
            "type": "keyword",
            "index": true
        }
    }
  
}

и я получаю

{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Mapper for [location] conflicts with existing mapping:\n[mapper [location] has different [index] values]"}],"type":"illegal_argument_exception","reason":"Mapper for [location] conflicts with existing mapping:\n[mapper [location] has different [index] values]"},"status":400}

Как обновить параметр index?

1 Ответ

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

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

Подумайте, что делает параметр индекса и почему он критические изменения из индексных документов

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

Раньше значение индекса было false, поэтому ваши существующие документы не имели индексированного значения и не могли запрашиваться, и теперь вы меняете на true, что не Это не имеет смысла, поскольку в ваших более ранних документах не будет индексированного значения, и по этой причине они называются критическими изменениями.

Вам необходимо создать новый индекс с новым значением индекса, и вы можете использовать reindex API за это.

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