Возврат документа при обновлении 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

Другие вопросы по тегам