Elasticsearch: определение корневого отображения имеет индекс неподдерживаемых параметров: not_analyzed

Привет всем, я пытаюсь создать схему теста.

PUT /test
{
    "mappings": {
        "field1": {
            "type": "integer"
        },
        "field2": {  
            "type": "integer"
        },
        "field3": {
            "type": "string",
            "index": "not_analyzed"
        },
        "field4": {
            "type": "string",
            "analyzer": "autocomplete",
            "search_analyzer": "standard"
        }
    },
    "settings": {
        bla
        bla
        bla
    }
}

Я получаю следующую ошибку

{
    "error": {
        "root_cause": [{
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters: [index : not_analyzed] [type : string]"
        }],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping [featured]: Root mapping definition has unsupported parameters:  [index : not_analyzed] [type : string]",
        "caused_by": {
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters:  [index : not_analyzed] [type : string]"
        }
    },
    "status": 400
}

Пожалуйста, помогите мне решить эту ошибку

Ответ 1

Вы почти здесь, вы просто упускаете несколько вещей:

PUT /test
{
  "mappings": {
    "type_name": {                <--- add the type name
      "properties": {             <--- enclose all field definitions in "properties"
        "field1": {
          "type": "integer"
        },
        "field2": {
          "type": "integer"
        },
        "field3": {
          "type": "string",
          "index": "not_analyzed"
        },
        "field4,": {
          "type": "string",
          "analyzer": "autocomplete",
          "search_analyzer": "standard"
        }
      }
    }
  },
  "settings": {
     ...
  }
}

ОБНОВИТЬ

Если ваш индекс уже существует, вы также можете изменить свои отображения следующим образом:

PUT test/_mapping/type_name
{
    "properties": {             <--- enclose all field definitions in "properties"
        "field1": {
          "type": "integer"
        },
        "field2": {
          "type": "integer"
        },
        "field3": {
          "type": "string",
          "index": "not_analyzed"
        },
        "field4,": {
          "type": "string",
          "analyzer": "autocomplete",
          "search_analyzer": "standard"
        }
    }
}

ОБНОВЛЕНИЕ:

Начиная с ES 7, типы отображения были удалены. Вы можете прочитать более подробную информацию здесь

Ответ 2

Я надеюсь, что приведенный выше ответ работает для упругого поиска <7.0, но в 7.0 мы не можем указать тип документа, и он больше не поддерживается. И в этом случае, если мы укажем тип документа, мы получим похожую ошибку.

Если вы используете Elastic search 7.0 и последнюю версию Nest С# (6.6). В ES 7.0 есть некоторые серьезные изменения, которые вызывают эту проблему. Это потому, что мы не можем указать тип документа и в версии 6.6 NEST они используют doctype. Таким образом, чтобы решить, что до выхода NEST 7.0, нам нужно скачать их бета-версию

Пожалуйста, пройдите по этой ссылке для исправления

https://xyzcoder.github.io/elasticsearch/nest/2019/04/12/es-70-and-nest-mapping-error.html

РЕДАКТИРОВАТЬ: NEST 7.0 теперь выпущен. NEST 7.0 работает с Elastic 7.0. Смотрите примечания к выпуску здесь для деталей.

Ответ 3

Проверьте свою версию Elastic.

У меня были эти проблемы, потому что я искал документацию по неверной версии.

enter image description here