ElasticSearch - обновляйте несколько документов одновременно с предложением WHERE - PullRequest
0 голосов
/ 24 сентября 2018

ElasticSearch 6.2.2 в Linux - все действия выполняются с помощью вызовов API - у нас нет настроенной Kibana.

Я пытаюсь обновить одно поле из примерно 5000 документов, чтобы оно имело одинаковое значение.Сейчас я знаю, как обновлять только один документ за раз, используя следующий вызов API:

URL:

POST http://{{elasticip}}:9200/{{index}}/_doc/{{docid}}/_update?pretty

Тело:

{
  "doc": { "categories": [ "NEWS" ]}
}

У меня есть приблизительно 5k документов со значением categories null.Поэтому мне нужно выполнить вызов API обновления, который говорит, что нужно обновить все документы, где поле categories имеет значение null со значением [ "NEWS" ].

Это достижимо с помощью вызова API?

1 Ответ

0 голосов
/ 24 сентября 2018

Этого можно добиться с помощью обновления по запросу API :

POST your-index/_update_by_query
{
  "script": {
    "source": "ctx._source.categories = params.categories",
    "lang": "painless",
    "params": {
      "categories": ["NEWS"]
    }
  },
  "query": {
    "bool": {
      "must_not": {
        "exists": {
          "field": "categories"
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...