首页 > 编程语言 >es更新部分字段内容java

es更新部分字段内容java

时间:2023-06-30 13:23:27浏览次数:31  
标签:Map java updateByQuery indexName 更新 params sb new es

public Boolean updateArray(String indexName, QueryBuilder queryBuilder, Map<String, Object> params) throws IOException {
    UpdateByQueryRequest updateByQuery = new UpdateByQueryRequest();
    updateByQuery.indices(indexName);
    updateByQuery.setQuery(queryBuilder);
    StringBuilder sb = new StringBuilder(params.size());
    params.forEach((k, v) -> {
        if (v instanceof Map) {
            Map<String, Object> arrayList = (Map<String, Object>) v;
            sb.append(StrUtil.format("ctx._source.{} = new ArrayList();", k, arrayList.size(), k, k));
            arrayList.forEach((a, f) -> {
                sb.append(StrUtil.format("ctx._source.{}.add(params.{}.{});", k, k, a));
            });
        } else {
            sb.append(StrUtil.format("ctx._source.{} = params.{};", k, k));
        }
    });
    Script script = new Script(ScriptType.INLINE, "painless", sb.toString(), params);
    updateByQuery.setScript(script);
    BulkByScrollResponse bulkByScrollResponse = restHighLevelClient.updateByQuery(updateByQuery, RequestOptions.DEFAULT);
    if (bulkByScrollResponse.getUpdated() > 0) {
        refresh(indexName);
        return true;
    }
    return false;
}
public void refresh(String indexName) throws IOException {
    restHighLevelClient.indices().refresh(new RefreshRequest().indices(indexName), RequestOptions.DEFAULT);
}
public void test(){
  Map<String, Object> params = new HashMap<>(2);
  Map<String, Object> paramList = new HashMap<>(2);
  paramList.put("a1", 1);
  paramList.put("a2", 2);
  params.put("list", paramList);
  params.put("name", "li");
  
  updateArray("indexName",new QueryBuilder(), params);
}

标签:Map,java,updateByQuery,indexName,更新,params,sb,new,es
From: https://www.cnblogs.com/eoore/p/17516462.html

相关文章

  • Module not found: Error: Can't resolve ' vue-resource'
    问题:在学习vue的过程中出现了这个问题,说明VueResource模块没有安装。解决方法:打开终端,进入当前项目所在目录,输入指令npminstallvue-resource--save然后等待安装,安装好了以后在main.js中引用(下图红色框中代码) ......
  • 解决yum 不能更新问题 :yum 报错Loaded plugins: fastestmirror, refresh-packagekit,
    因为测试需要,安装了CentOS6.4,并需要安装kvm,虚拟Windows2008进行测试。实际操作中,因为CentOS6已经停止维护了,所以每一步操作基本都存在一些问题。Yum(全称为YellowdogUpdater,Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的......
  • python 报错AttributeError: '_TestResult' object has no attribute 'outputBuffer'
    报错信息: 原因:使用setupclass必须加@classmethod装饰器 解决方案:在setupclass和teardownclass方法前面加@classmethod ......
  • postgresql 字符串转整数 int、integer
    postgresql字符串转整数int、integer --把'1234'转成整数selectcast('1234'asinteger);--用substring截取字符串,从第8个字符开始截取2个字符:结果是12selectcast(substring('1234abc12',8,2)asinteger)---使用to_number函数来转换成整数---to_number(text,......
  • 10个Salesforce集成项目最佳实践,助力成为专家!
    随着企业越来越关注数据驱动的决策方法,集成多个系统成为了Salesforce实施不可或缺的一部分。无论该项目是Salesforce的传统CRM迁移还是新的CRM实施,SalesforceCRM与ERP以及其他业务关键系统的集成都是需要考虑的重要策略。集成项目的成功很大程度上取决于可扩展性、安全性、数......
  • Vue3 vite:is a JavaScript file. Did you mean to enable the 'allowJs' option?
    描述今天在vue3+vite下进行打包时,突然vscode报了一个error。 大概的意识是询问是否启用“allowJS”选项,因为该文件在程序内是指定用于编译的根文件。提示信息已经很明确了,下面从网上摘抄了下什么是allowJS选项。allowJs是1.8中新提供的选项。TypeScrip......
  • Java 事务管理@Transactional注解rollbackFor回滚属性,事务的传播行为propagation(REQUI
    事务管理Java事务管理@Transactional注解rollbackFor属性所有的异常都回滚;事务的传播行为propagation(REQUIRED,REQUIRES_NEW)01.事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时......
  • WPF Showdialog与DialogResult的注意事项
    我们知道如果要设置window.Showdialog()的返回值,需要设置window.DialogResult属性。但是设置window.DialogResult属性会自动触发close,如果window.DialogResult属性会触发Window_OnClosing事件privatevoidBtnCancel_Click(objectsender,RoutedEventArgse){......
  • Windows系统安装timescaledb
    TimescaleDB是基于PostgreSQL数据库打造的一款时序数据库,插件化的形式,随着PostgreSQL的版本升级而升级,不会因为另立分支带来麻烦。TimescaleDB具备以下特点1.基于时序优化2.自动分片(按时间、空间自动分片(chunk))3.全SQL接口4.支持垂直于横向扩展5.支......
  • response文件流是预览还是下载的区别
    response文件流是预览还是下载的区别加上 response.setHeader("Content-Disposition",getFileName(file,request));response.setContentType("application/force-download");表示只能下载不能预览完整的下载代码如下:@ApiOperation("下载文件")@GetMapping(value......