ES条件更新
更新普通数据
post http://localhost:9200//udata_v1/udata/_update_by_query
{
"script": {
"source": "ctx._source.labels.version = 1"
},
"query": {
"term": {
"name": "测试"
}
}
}
java 实现
UpdateByQueryRequest request = new UpdateByQueryRequest("udata_v1");
request.setQuery(new TermQueryBuilder("name", "测试"));
request.setScript(new Script("ctx._source['version'] = 1"));
restHighLevelClient.updateByQuery(request, RequestOptions.DEFAULT);
往数组字段追加数据
post http://localhost:9200//udata_v1/udata/_update_by_query
{
"script": {
"source": "ctx._source.labels.add('ff')"
},
"query": {
"term": {
"name": "测试"
}
}
}
java实现
UpdateByQueryRequest request = new UpdateByQueryRequest(indexName);
request.setQuery(new TermQueryBuilder("name", "测试"))
String script = StrUtil.format("ctx._source.labels.add('{}')", "ff");
request.setScript(new Script(script));
BulkByScrollResponse response = restHighLevelClient.updateByQuery(request, RequestOptions.DEFAULT);
移除数组中的值
post http://localhost:9200//udata_v1/udata/_update_by_query
{
"script": {
"source": "ctx._source.labels.removeIf(item -> item == 'java')"
},
"query": {
"term": {
"name": "测试"
}
}
}
java实现
UpdateByQueryRequest request = new UpdateByQueryRequest(indexName);
request.setQuery(new TermQueryBuilder("name", "测试"))
String script = StrUtil.format("ctx._source.labels.removeIf(item -> item == '{}')", "java");
request.setScript(new Script(script));
BulkByScrollResponse response = restHighLevelClient.updateByQuery(request, RequestOptions.DEFAULT);

浙公网安备 33010602011771号