Создание нового индекса с новым отображением из ранее существующего индекса - PullRequest
0 голосов
/ 13 января 2019
{
  "someindex": {
    "aliases": {
      "somealias": {}
    },
    "mappings": {},
    "settings": {
      "index": {
        "number_of_shards": "5",
        "provided_name": "someindex",
        "creation_date": "1547325991414",
        "analysis": {
          "filter": {
            "autocomplete_filter": {
              "type": "edge_ngram",
              "min_gram": "1",
              "max_gram": "20"
            }
          },
          "normalizer": {
            "lowerCaseNormalizer": {
              "filter": [
                "lowercase"
              ],
              "type": "custom"
            }
          },
          "analyzer": {
            "standard": {
              "filter": [
                "lowercase",
                "autocomplete_filter"
              ],
              "type": "custom",
              "tokenizer": "standard"
            }
          }
        },
        "number_of_replicas": "1",
        "uuid": "9vrt0U90RWG-4MRQEIbj6w",
        "version": {
          "created": "6050499"
        }
      }
    }
  }
}

Выше приведена структура моей недавно созданной структуры. В моей текущей настройке у меня есть атрибут с именем bookName в моем текущем индексе, для которого выполняется текущее отображение, как показано ниже:

{
  "bookName": {
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256,
        "normalizer": "lowerCaseNormalizer"
      }
    }
  }
}

Теперь, когда я пытаюсь переиндексировать мой новый индекс с именем " someindex " и хочу вставить новое отображение для поля bookName, это вызывает ошибку. "

{
  "error": {
    "root_cause": [
      {
        "type": "mapper_parsing_exception",
        "reason": "Root mapping definition has unsupported parameters:  [mappings : {details={properties={suggest={type=completion}, bookName={type=text, analyzer=standard}}}}]"
      }
    ],
    "type": "mapper_parsing_exception",
    "reason": "Root mapping definition has unsupported parameters:  [mappings : {details={properties={suggest={type=completion}, bookName={type=text, analyzer=standard}}}}]"
  },
  "status": 400
}

Я перепробовал все и смог сделать это с нуля на случайных данных для тестирования. Но я должен представить эту функцию в своем проекте, и у меня есть один индекс эластичности, готовый к различным сопоставлениям. Миграция очень беспокоит меня. Может ли кто-нибудь подсказать мне, как этого добиться?

Примечание. Я перепробовал все, искал документы Elastic и все соответствующие ссылки. Я могу сделать это на новом наборе данных, но миграция - это реальная проблема для меня, так как я новичок в этой области.

1 Ответ

0 голосов
/ 13 января 2019

Чтобы обновить отображение индекса, вы должны использовать put mapping api . Поэтому для обновления сопоставления используйте следующий запрос:

PUT someindex/_mappings/_doc
{
  "properties": {
    "bookName": {
      "type": "text",
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256,
          "normalizer": "lowerCaseNormalizer"
        }
      }
    }
  }
}

Обратите внимание, что я предположил, что имя сопоставления - _doc.

...