最近发现es中有错误数据,某些索引下的字段标识是反的,想要直接根据条件修改指定字段的值
比如es中有一批电脑,每台电脑都自带很多参数(厂家、内存、CPU型号、长宽高等),索引是电脑自己的标识,我想把所以联想的数据中,酷睿i7的电脑,性能标识从中等改为高级
可以使用_update_by_query修改,Java es API中对应的是 UpdateByQueryRequestBuilder
实现上面的例子:
POST 电脑索引/_update_by_query
{
"query": {
"bool": {
"must": [
{
"term" : {
"CPU.keyword" : {
"value" : "酷睿i7"
}
}
},
{
"term" : {
"Performance.keyword" : {
"value" : "中等"
}
}
}
]
}
},
"script": {
"source": "ctx._source.Performance='高级';"
}
}
_delete_by_query是删除,用法一样