Невозможно создать сопоставление наasticsearch - PullRequest
1 голос
/ 02 апреля 2020

Я хочу создать индекс наasticsearch и хочу создать отображение.

Что я понял о отображении, так это то, что это необязательный шаг перед вставкой данных для определения типов полей.

Создание индекса:

curl -X PUT "localhost:9200/idx5"

Создание отображения:

curl -X PUT "localhost:9200/idx5/_mapping" -H 'Content-Type: application/json' -d'
{
    "properties": {
        "element_type": {
            "type": "keyword"
        }
    }
}
'

Теперь я получаю эту ошибку при попытке вставить данные в индекс

[type] => illegal_argument_exception
[reason] => Rejecting mapping update to [idx5] as the final mapping would have more than 1 type: [_doc, doc]

Если я это сделаю Я не создаю отображение, у меня нет ошибок.

Есть идеи?

Спасибо

** РЕДАКТИРОВАТЬ **

Версия Elasti c поиск: 6.2.4

** РЕДАКТИРОВАТЬ **

Вот как я пытаюсь вставить данные:

curl -X POST http://localhost:9200/idx5/doc/ -H 'Content-Type: application/json' -d'{
         "id" : "1234",
         "element_type": "TYPE1",
          "title" : "test"
     }
     '

1 Ответ

0 голосов
/ 02 апреля 2020

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

Теперь при индексации вместо _doc вы используете doc, что означает, что Elasticsearch считает, что вы используете другое имя type для вашего index и, поскольку он не поддерживается, Elasti c выдает ошибку ( даже указав имена типов в вашем индексе ?, которые doc и _doc в данном случае ).

Просто замените ваш URL в вашем индексе, сделайте c запрос на http://localhost:9200/idx5/_doc/, и он должен работать.

Пожалуйста, прочитайте elasti c do c для удаления типа и какая версия имеет какие изменения. И специфицирует c для Elasti c 6.X

Индексы, созданные в 6.x, допускают только один тип для индекса. Любое имя может быть использовано для типа, но может быть только одно. Предпочтительным именем типа является _do c, поэтому индексные API имеют тот же путь, что и в 7.0: PUT {index} / _ doc / {id} и POST {index} / _ do c

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