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);
posted @ 2022-05-24 17:20  lzy7422  阅读(1766)  评论(0)    收藏  举报