Частично обновить документ, не удаляя пропущенные поля в Elasticsearch - PullRequest
0 голосов
/ 07 июня 2018

Предположим, я хотел бы проиндексировать документ

PUT twitter/_doc/1
{
    "user" : "kimchy",
    "any" : "thing"
}
GET twitter/_doc/1

, который возвращает

{
  "_index": "twitter",
  "_type": "_doc",
  "_id": "1",
  "_version": 3,
  "found": true,
  "_source": {
    "user": "kimchy",
    "any": "thing"
  }
}

, но затем я бы хотел обновить документ (без полной перезаписи исходного)[обратите внимание на разницу в полях]

PUT twitter/_doc/1
{
    "user" : "kimchy",
    "some" : "thing"
}
GET twitter/_doc/1

{
  "_index": "twitter",
  "_type": "_doc",
  "_id": "1",
  "_version": 6,
  "found": true,
  "_source": {
    "user": "kimchy",
    "some": "thing"
  }
}

, но ES перезаписывает весь документ.Можно ли как-нибудь оставить пропущенные поля нетронутыми?

В идеале я хотел бы получить

  "_source": {
    "user": "kimchy",
    "any" : "thing",
    "some": "thing"
  }

Спасибо!

1 Ответ

0 голосов
/ 07 июня 2018

Да, вам нужно сделать частичное обновление , например

POST twitter/_doc/1/_update
{
  "doc": {
    "user" : "kimchy",
    "some" : "thing"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...