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 @   lzy7422  阅读(1734)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示