springboot + es7.12.3 elasticsearchRestTemplate使用记录

 
private BoolQueryBuilder getQueryBuilder(QueryCollectWaterDataPageRequestVO requestVO) {
        BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
        if (!CollectionUtils.isEmpty(requestVO.getCompanyIds())) {
            //termsQuery 精确查找corpId字段为精确的多个值,和mysql的in类似
            queryBuilder.must(QueryBuilders.termsQuery("corpId", requestVO.getCompanyIds()));
        }
        if (requestVO.getWaterMeterNumber() != null) {
            //matchPhraseQuery 模糊查询waterMeterNumber中包含某一个值,如果值为字符串最好用这个
            queryBuilder.must(QueryBuilders.matchPhraseQuery("waterMeterNumber", "*" + requestVO.getWaterMeterNumber() + "*"));
        }
        //rangeQuery 范围查询collectTime 大于等于和小于等于某个值
        if (requestVO.getStartCollectTime() != null) {
            queryBuilder.must(QueryBuilders.rangeQuery("collectTime").gte(requestVO.getStartCollectTime().getTime()).lte(requestVO.getEndCollectTime().getTime()));
        }
        return queryBuilder;
    }
 BoolQueryBuilder queryBuilder = getQueryBuilder(requestVO);
        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                //条件过滤
                .withQuery(queryBuilder)
                //分页
                .withPageable(PageRequest.of(requestVO.getPageNum(), requestVO.getPageSize()))
                .withSort(SortBuilders.fieldSort("collectTime").order(SortOrder.DESC))
                //设置查询时返回的总数是否超过es设置的限制,true是解除限制默认为false
                .withTrackTotalHits(true).build();
        SearchHits<ESCollectWaterDataPageResultVO> searchHit = elasticsearchRestTemplate.search(searchQuery, ESCollectWaterDataPageResultVO.class);

        List<QueryCollectWaterDataPageResultVO> resultList = new ArrayList<>();

        if (searchHit.getTotalHits() > 0) {
            searchHit.forEach(content -> {
                QueryCollectWaterDataPageResultVO resultVO = new QueryCollectWaterDataPageResultVO();
                BeanUtils.copyProperties(content.getContent(), resultVO);
                resultVO.setCuWaterData(content.getContent().getData());
                resultVO.setOneWaterData(content.getContent().getOneData());
                resultVO.setTwoWaterData(content.getContent().getTwoData());
                resultVO.setThreeWaterData(content.getContent().getThreeData());
                resultVO.setCurrentCollectTime(content.getContent().getCollectTime());
                resultList.add(resultVO);
            });
        }
        BasePageResultDto<QueryCollectWaterDataPageResultVO> pageResultVOBasePageResultDto = new BasePageResultDto((int)searchHit.getTotalHits(), resultList);

更新数据如下所示:

 BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
        //设置更新的条件,waterMeterNumber等于cs00009999的都进行更新
        boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("waterMeterNumber","cs00009999"));
        NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(boolQueryBuilder);
        Map map = new HashMap<>();
        map.put("childWaterMeterCoverNumber", "300320230109999");

        UpdateQuery updateByQueryRequest = UpdateQuery.builder(nativeSearchQuery)
                //设置脚本 把waterMeterNumber等于cs00009999的 childWaterMeterCoverNumber字段值更新为300320230109999
                .withScript("ctx._source.childWaterMeterCoverNumber=params.childWaterMeterCoverNumber;")
                .withScriptType(ScriptType.INLINE)
                //更新的值k-v结构对应
                .withParams(map)
                //立即生效,刷新缓存
                .withRefreshPolicy(RefreshPolicy.IMMEDIATE)
                .build();

        //指定具体哪个es索引库
        ByQueryResponse waterhisdata = elasticsearchRestTemplate.updateByQuery(updateByQueryRequest, IndexCoordinates.of("waterhisdata"));

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
elasticsearch-7.12.0-py2.py3-none-any.whl 是 Elasticsearch 的 Python 客户端库的一个安装文件。Elasticsearch 是一个开源的实时分布式搜索和分析引擎,用于处理大规模数据集。它提供了一个简单可扩展的 RESTful API 接口,允许用户进行高效的数据搜索、分析以及存储。 这个安装文件的命名规则是根据 Python 的支持版本以及可运行平台来命名的。-py2.py3 表示可以同时兼容 Python 2 和 Python 3 版本的代码。-none-any 表示它是一个纯 Python 代码的库,不依赖于特定的操作系统或平台。 通过安装 elasticsearch-7.12.0-py2.py3-none-any.whl,您可以轻松地在您的 Python 环境中使用 Elasticsearch。这个库提供了许多功能,包括连接到 Elasticsearch 实例、执行索引、搜索和分析操作,以及管理和维护 Elasticsearch 的集群和节点。您可以使用这个库来构建各种应用,如全文搜索引擎、实时日志分析等。 要安装 elasticsearch-7.12.0-py2.py3-none-any.whl,您可以使用 pip 工具,在命令行中运行以下命令: ``` pip install elasticsearch-7.12.0-py2.py3-none-any.whl ``` 安装成功后,您就可以在您的 Python 代码中导入 elasticsearch 模块,并开始使用 Elasticsearch 的功能了。 总结:elasticsearch-7.12.0-py2.py3-none-any.whl 是 Elasticsearch 的 Python 客户端库的安装文件,用于连接、操作和管理 Elasticsearch 实例。通过安装这个库,您可以在您的 Python 项目中轻松使用 Elasticsearch 的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值