Elasticsearch: Визначення кореневого зіставлення має непідтримувані параметри index: not_analyzed


81

Привіт всім! Я намагаюся створити тест схеми.

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
}

Будь ласка, допоможіть мені виправити цю помилку

Відповіді:


122

Ви майже тут, вам просто бракує кількох речей:

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, типи відображення були вилучені. Детальніше ви можете прочитати тут


Дякую . Чи можна створити відображення без імені типу. Я хочу вставити дані без імені типу Щось на кшталт {field1, field2 ....}, а не як typeName {field1, field2 ...}
Рамеш

1
Гаразд тут Що таке тест, а що тип_назви?
Рамеш

6
test- це ваше ім’я індексу і type_nameце ім’я вашого типу відображення.
Валь

2
копія вставила цей код. видає помилку: "type": "mapper_parsing_exception", "reason": "Визначення кореневого зіставлення має непідтримувані параметри: [ім'я_типу: {властивості = {field1 = {type = integer}, field4, = {search_analyzer = standard, analyzer = autocomplete , type = string}, field3 = {index = not_analyzed, type = string}, field2 = {type = integer}}}] "
Рамеш Парік,

1
Для мене type_nameце не працює. Я використовую elasticsearch-oss: 7.20 зображення
Себастіалонсо,

21

Я сподіваюся, що наведена вище відповідь працює для еластичного пошуку <7.0, але в 7.0 ми не можемо вказати тип документа, і він більше не підтримується. І в цьому випадку, якщо ми вказамо тип документа, ми отримаємо подібну помилку.

Я використовую Elastic search 7.0 та останню версію Nest C # (6.6). Є деякі останні зміни в ES 7.0, що спричиняє цю проблему. Це тому, що ми не можемо вказати тип документа, а у версії 6.6 NEST вони використовують тип документа. Отже, щоб вирішити проблему, поки не вийде NEST 7.0, нам потрібно завантажити їх бета-пакет

Будь ласка, перейдіть за цим посиланням, щоб виправити це

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

EDIT: NEST 7.0 випущено. NEST 7.0 працює з Elastic 7.0. Детальніше див. Тут до приміток до випуску .


7

Перевірте свою версію Elastic.

У мене були ці проблеми, оскільки я переглядав документацію неправильної версії.

введіть тут опис зображення


4

Починаючи з ES 7, типи відображення були вилучені. Детальніше ви можете прочитати тут

Якщо ви використовуєте Ruby On Rails, це означає, що вам може знадобитися видалити document_typeз вашої моделі або проблеми.

В якості альтернативи типам відображення одним із рішень є використання індексу для кожного типу документа.

До:

module Searchable
  extend ActiveSupport::Concern

  included do
    include Elasticsearch::Model
    include Elasticsearch::Model::Callbacks
    index_name [Rails.env, Rails.application.class.module_parent_name.underscore].join('_')
    document_type self.name.downcase
  end
end

Після:

module Searchable
  extend ActiveSupport::Concern

  included do
    include Elasticsearch::Model
    include Elasticsearch::Model::Callbacks
    index_name [Rails.env, Rails.application.class.module_parent_name.underscore, self.name.downcase].join('_')
  end
end

Саме моє випуск! Радий, що це було легким виправленням, провівши 2 години читання документів над цим.
bkunzi01

0
PUT /testIndex
{
    "mappings": {
        "properties": {     <--ADD THIS
            "field1": {
                "type": "integer"
            },
            "field2": {  
                "type": "integer"
            },
            "field3": {
                "type": "string",
                "index": "not_analyzed"
            },
            "field4": {
                "type": "string",
                "analyzer": "autocomplete",
                "search_analyzer": "standard"
            }
        }
    },
    "settings": {
        bla
        bla
        bla
    }
}

Ось подібна команда, яку я знаю, працює:

curl -v -H "Content-Type: application/json" -H "Authorization: Basic cGC3COJ1c2Vy925hZGFJbXBvcnABCnRl" -X PUT -d '{"mappings":{"properties":{"city":{"type": "text"}}}}' https://35.80.2.21/manzanaIndex

Розбивка для наведеної вище команди curl:

PUT /manzanaIndex
{
    "mappings":{
        "properties":{
                "city":{
                    "type": "text"
                }
        }
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.