Я пытаюсь вставить документ в 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.Любая помощь будет оценена.Спасибо.