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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏