Обновление информации в Elastic Search - PullRequest
0 голосов
/ 28 ноября 2018

У меня вопрос, я пытаюсь обновить объект в ES, поэтому каждый раз, когда я запрашиваю его, я получаю всю обновленную информацию.У меня есть такой объект:

{
  "took": 7,
  "timed_out": false,
  "_shards": {
    "total": 768,
    "successful": 768,
    "failed": 0
  },
  "hits": {
    "total": 456,
    "max_score": 1,
    "hits": [
      {
        "_index": "sometype_1",
        "_type": "sometype",
        "_id": "12312321312312",
        "_score": 1,
        "_source": {
          "readModel": {
            "id": "asdfqwerzcxv",
            "status": "active",
            "hidden": false,
            "message": "hello world",
          },
          "model": {
            "id": "asdfqwerzcxv",
            "content": {
              "objectId": "421421312312",
              "content": {
                 "@type": "text",
                 "text": "hello world"
               }
              ..... //the rest of the object...

И я хочу обновить сообщение (часть модели чтения), поэтому я сделал что-то вроде этого:

PUT test/readModel.id/ID123
{
    "message" : "hello"
}

Но каждый раз, когда язапрос ищет ID123 Я получаю ту же информацию (и что еще хуже, чем больше PUT я делаю, тем больше объектов я получаю (с той же информацией)

есть идеи как?

1 Ответ

0 голосов
/ 28 ноября 2018

Если требуется обновить только один документ, вы можете использовать API обновления следующим образом:

POST sometype_1/sometype/12312321312312/_update
{
  "doc": {
    "model.message": { ... your JSON object here... }
  }
}

Если в нескольких документах может быть readModel.id: asdfqwerzcxv и вы хотитечтобы обновить все из них одним и тем же message, вам нужно использовать Обновление по запросу API , например this_

POST sometype_1/_update_by_query
{
  "script": {
    "source": "ctx._source.message = params.message",
    "lang": "painless",
    "params": {
      "message": "hello"
    }
  },
  "query": {
    "match": {
      "readModel.id": "asdfqwerzcxv"
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...