ElasticSearch - 使用 WHERE 子句一次更新多个文档. Linux 上的



ElasticSearch 6.2.2 - 所有活动都是通过 API 调用实现的 - 我们没有设置 Kibana。

我正在尝试将大约 5,000 个文档的一个字段更新为相同的值。现在我只知道如何使用以下 API 调用一次更新一个文档:

网址:

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

身体:

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

我有大约 5k 个文档,categories值为null. 所以我需要做一个更新 API 调用,说更新所有字段categories字段null[ "NEWS" ]的文档。

这可以通过 API 调用实现吗?

这可以使用查询更新 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"
}
}
}
}
}

最新更新