Spring Data Elasticsearch 一些异常报错、注意事项(1)

这篇具有很好参考价值的文章主要介绍了Spring Data Elasticsearch 一些异常报错、注意事项(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录一:批量更新数据saveAll

引入maven依赖

 <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>4.0.9.RELEASE</version>
        </dependency>
public interface DeviceRepository extends ElasticsearchRepository<Device,String> {
        
    }

 saveAll批量新增,如果数据存在则会更新数据

public void checkOnline() {
        List<Device> filterList = new ArrayList<>();
        QueryBuilder query = QueryBuilders.boolQuery()
                .must(QueryBuilders.termQuery("checkLine", Constant.CHECK_OFFLINE));

        Iterable<Device> searchResult = deviceRepository.search(query);
        searchResult.forEach(item -> {
            item.setCheckLine(Constant.CHECK_ONLINE);
            filterList.add(item);
        });
        if (ObjectUtils.isNotEmpty(filterList)) {
            deviceRepository.saveAll(filterList);
        }

    }

记录二:批量更新数据Script脚本更新字段

参考:Script query | Elasticsearch Guide [8.5] | Elastic

  QueryBuilder query = QueryBuilders.boolQuery()
            .must(QueryBuilders.termQuery("checkLine", Constant.CHECK_OFFLINE))
            .must(QueryBuilders.rangeQuery("createTime").lte(new Date().getTime()));

    Map<String, Object> params = new HashMap<>();
        params.put("checkLine", Constant.CHECK_ONLINE);
    Script script = new Script(ScriptType.INLINE,"painless","ctx._source.checkLine = params.checkLine",params);

    UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(indexName);
    updateByQueryRequest.setQuery(query);
    updateByQueryRequest.setScript(script);

    BulkByScrollResponse response = elasticsearchRestTemplate.getClient().updateByQuery(updateByQueryRequest, RequestOptions.DEFAULT);

记录三:空字段查询处理

如果查询字段createTime在ES数据中不存在,直接用.must(QueryBuilders.rangeQuery("createTime").lte(new Date().getTime()))查询会报错;需要组装createTime介于时间范围和没有这个createTime字段的查询条件。

使用ES复合查询

参考:Boolean query | Elasticsearch Guide [7.4] | Elastic

组合过滤器 | Elasticsearch: 权威指南 | Elastic文章来源地址https://www.toymoban.com/news/detail-669475.html

    QueryBuilder query = QueryBuilders.boolQuery()
            .must(QueryBuilders.termQuery("checkLine", Constant.CHECK_OFFLINE))
            .should(QueryBuilders.rangeQuery("createTime").lte(new Date().getTime()))
            .should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("createTime")));
    
    Map<String, Object> params = new HashMap<>();
    params.put("checkLine", Constant.CHECK_ONLINE);
    Script script = new Script(ScriptType.INLINE,"painless","ctx._source.checkLine = params.checkLine",params);

    UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest(indexName);
    updateByQueryRequest.setQuery(query);
    updateByQueryRequest.setScript(script);
    
    BulkByScrollResponse response = elasticsearchRestTemplate.getClient().updateByQuery(updateByQueryRequest, RequestOptions.DEFAULT);

到了这里,关于Spring Data Elasticsearch 一些异常报错、注意事项(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#反射的学习,反射的一些注意事项,反射的一些使用代码的实例

    本文档写的的是C#中的反射常用的方式(附带示例代码)以及在使用的时候的一些注意事项。 C#中的反射是一种强大的机制,它允许在运行时动态地检查、访问和操作程序的元数据、类型信息和对象。以下是C#中反射常用的技巧和使用方式: 获取类型信息:使用Type类可以获取

    2024年02月06日
    浏览(48)
  • c++ - 抽象类 和 使用多态当中一些注意事项

     在虚函数的后面写上 =0 ,则这个函数为纯虚函数。 纯虚函数不需要写函数的定义,他有类似声明一样的结构。  我们把具有纯虚函数的类,叫做抽象类。 所谓抽象就是,不符合常理的,偶然的,和平常的类不太一样的类。抽象一般是我们人自己想出来的形象,在现实世界

    2024年02月09日
    浏览(33)
  • 手机怎么剪视频?分享一些剪辑工具和注意事项

    视频剪辑是一种将多个视频片段进行剪切、合并和编辑的技术,它可以帮助我们制作出精彩的视频作品。如今,随着智能手机的普及,我们可以随时随地使用手机进行视频剪辑。本文将为大家介绍一些手机剪辑工具和注意事项,帮助大家更好地进行视频剪辑。   首先,我们来

    2024年02月10日
    浏览(46)
  • Unity发布抖音小游戏的一些注意事项

    使用 webgl模式 发布抖音小游戏的一些注意事项 1.打包 使用webgl模式打包抖音小游戏,会因为找不到aapt工具导致打包失败 提示: aapt检查失败: sdk/build-tools/版本号。 解决方法:再unity hub里添加Android Build Support  2.黑屏问题 相机的HDR设为off 3.Text字体不见的问题 不能用unity自带的

    2024年02月11日
    浏览(46)
  • git常规操作流程(纯命令行操作)和一些注意事项

    当你在单位拿到了git仓库,并利用公司给你的OA账号和邮箱完成了你的git基础配置,下面就是使用命令行的无错固定操作流程 如果你很着急,你可以直接跳到最后的 总结部分 1.从仓库克隆代码到本地 这里的[codeUrl]就是你仓库的地址,当你在仓库点击图中绿色位置时,剪贴板复制的就

    2024年02月03日
    浏览(45)
  • Matlab转Python 画图pcolormesh的使用及一些注意事项

    今天想把matlab一段画图代码转为python,使用到了colormap,尝试了一下午,将结果以及一些注意事项记录下来,算作学习笔记了。 先上matlab原代码 结果如下: 注意: 在pcolormesh函数使用过后,就必须要设置xlim或者ylim,然后再使用colorbar的函数,否则设置ylim会导致语句无效,不

    2024年02月06日
    浏览(42)
  • 关于 Go 协同程序(Coroutines 协程)、Go 汇编及一些注意事项。

    参考:  Go 汇编函数 - Go 语言高级编程 Go 嵌套汇编 - 掘金 (juejin.cn) 前言: Golang 适用 Go-Runtime(Go 运行时,嵌入在被编译的PE可执行文件之中)来管理调度协同程式的运行。 Go 语言没有多线程(MT)的概念,在 Go 语言之中,每个 Go 协程就类似开辟了一个新的线程,效率上,肯

    2024年01月25日
    浏览(69)
  • MySQL5 和 MySQL8 的配置区别 & 一些注意事项

    先保证你的mysql正在运行,假如用户名是 root ,密码是 123456 ,运行下边的代码可以查看mysql的版本号。 这里我的版本是5.7.19。也就是5版本的。 注意:下边的url区别不用管。看到这就可以了。 当然8版本的后边不写也没事。 不建议在没有服务器身份验证的情况下建立SSL连接。

    2024年02月05日
    浏览(40)
  • spring-data-elasticsearch使用Sort排序时Please use a keyword field instead. ……异常解决

    核心提示在 Please use a keyword field instead. Alternatively, set fielddata=true on [dataTimestamp] in order to load field data by uninverting the inverted index. 待排序字段 dataTimestamp 没有为排序优化,所以无法排序,需要配置 FieldType.Keyword 或 fielddata = true ,可是代码中都配置了为什么还提示呢,往下看……

    2023年04月24日
    浏览(41)
  • @NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor的区别和@Data和@Builder的用法以及在idea中使用的注意事项

    1、区别         @NoArgsConstructor:注解在类上,为类提供一个无参的构造方法。         @AllArgsConstructor:注解在类上,为类提供一个全参的构造方法         @RequiredArgsConstructor:注解在类上,会生成构造方法(可能带参数也可能不带参数)。注意:@RequiredArgsConstr

    2024年04月26日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包