jjzjj

updateByQuery

全部标签

elasticsearch 之 updateByQuery

elasticsearch的updateByQuery使用script脚本完成部分字段的更新elasticsearch文档批量更新最近项目中用到了对es文档的批量更新操作,根据id单个单个进行文档更新时比较影响性能,故而使用es的script脚本对query查询出来的文档进行更新操作。{ “script”:{ “source”:“ctx._source[‘要修改的字段名’]=‘要修改为的参数’” }, “query”:{ “term”:{ “条件字段名”:“条件字段参数” } }}前置知识1、会使用es2、需要了解script3、了解painless语法案例1批量将文档中一个字段(u

记录Springboot使用ElasticsearchRestTemplate的updateByQuery的用法的坑

由于ElasticsearchRestTemplate对RestHighLevelClient 进一步的封装,因此对updateByQuery的摸索过程记录BoolQueryBuilderqueryBuilder=QueryBuilders.boolQuery().filter(QueryBuilders.nestedQuery("rule_info_list",QueryBuilders.termQuery("rule_info_list.id",ruleId),ScoreMode.None)).filter(QueryBuilders.termQuery("url",url));Nativ

elasticsearch 的 updateByQuery 使用脚本script 完成部分字段的更新

需求:根据某个条件查询es中的数据,并更新es中的部分字段。更新需求细化:直接修改/添加一个字段,这里是指直接修改/添加一个一级字段。(我们知道es是json格式,通常情况下,我们会有多层次的字段。本文中,对于多层次的字段,我用一级字段,二级字段来描述。如果还不明白,直接看我的案例吧)这个是最简单的,不会有什么错误。修改一个二级字段,这里有一个问题,我们需要考虑到到一级字段不存在的情况。否则会报一个空指针异常。如果是嵌套类型,该如何处理。删除一个字段。如果字段上已经有值,再天添加一个值,并且不能覆盖之前的。 我在遇到这些问题的时候,先看了es的官网,官网只有简单的例子,并无法完成上边的需求。然