Возврат документа при обновлении asticsearch
Допустим, я обновляю данные пользователя
curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
"doc" : {
"name" : "new_name"
},
"fields": ["_source"]
}'
Вот пример того, что я получаю, когда я выполняю обновление
{
"_index" : "test",
"_type" : "type1",
"_id" : "1",
"_version" : 4
}
Как выполнить обновление, которое возвращает данный документ после обновления?
1 ответ
Документация немного вводит в заблуждение относительно возврата полей при выполнении обновления Elasticsearch. На самом деле он использует тот же подход, который использует индекс API, передавая параметр по URL-адресу, а не как поле в обновлении.
В вашем случае вы бы отправили:
curl -XPOST 'localhost:9200/test/type1/1/_update?fields=_source' -d '{
"doc" : {
"name" : "new_name"
}
}'
В моем тестировании в Elasticsearch 1.2.1 он возвращает что-то вроде этого:
{
"_index":"test",
"_type":"testtype",
"_id":"1","_version":9,
"get": {
"found":true,
"_source": {
"user":"john",
"body":"testing update and return fields",
"name":"new_name"
}
}
}
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-index_.html http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html