Вставка Elasticsearch с вложенными полями работает на Kibana, но не с cURL - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь вставить документ в ElasticSearch с вложенным полем.Я создал индекс, пометив поле как вложенное с помощью команды PUT:

PUT nested_test
{
    "mappings": {
        "_doc": {
            "properties": {
                "nested_field": {
                     "type": "nested"
                }
            }
        }
    }
}

Теперь я вставляю данные в этот индекс из консоли Kibana с помощью:

POST nested_test/_doc/1234
{
    "created_time": "2018-01-01 01:52:53",
    "status": "Ok",
    "nested_field": [
        {
            "col4": 0,
            "col5": 0,
            "col3": 0,
            "col1": 3234253,
            "col2": 1
        },
        {
            "col5": 0,
            "col4": 0,
            "col2": 1,
            "col1": 34241,
            "col3": 2
        },
        {
            "col5": 0,
            "col4": 0,
            "col2": 1,
            "col1": 775756,
            "col3": 0
        }
    ]
}

Это работаетотлично, и я могу видеть данные в индексе с вложенным полем, проиндексированным, как и ожидалось.

Но если я использую тот же json с curl, я получаю сообщение об ошибке:

"error" : {
    "type" : "illegal_argument_exception",
    "reason" : "object mapping [nested_field] can't be changed from nested to non-nested"
  }

Используется точная команда curl:

curl -XPOST -H 'Content-Type: application/json'  http://someurl:9200/nested_test/doc/_bulk?pretty --data-binary @es.json

Обратите внимание, чтоЯ пробовал как с POST, так и с PUT.Не в состоянии понять, почему тот же самый json с тем же индексом работает с Kibana, но не с cURL.Любая помощь будет оценена.Спасибо.

1 Ответ

0 голосов
/ 21 февраля 2019

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

curl -XPOST -H 'Content-Type: application/json'  http://someurl:9200/nested_test/_doc/_bulk?pretty --data-binary @es.json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...