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调用,该更新API调用categories
字段为null
且值为[ "NEWS" ]
的所有文档。
通过API调用可以实现吗?
答案 0 :(得分:2)
这可以使用update by query 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"
}
}
}
}
}