• 首页
  • 邻居
  • 关于
  • 归档
  • 搜索
  • 夜间模式
    ©2020-2026  我的学习笔记 Theme by OneBlog

    我的学习笔记博客

    搜索
    标签
    # 随笔 # Java # 教程 # openwrt # Mysql # SQL # 爬虫 # post # Js调优 # MAVEN
  • 首页>
  • 随笔>
  • 正文
  • ES时间范围查询案例,并分页查询

    2024年04月15日 1.1 k 阅读 0 评论 2833 字
     public PageInfo<BTCarGetoutLogs> queryPage(QueryVo queryParams, ProcessForm processForm, String tableName) {
            int pageNum = queryParams.getPageNum().intValue();
            int pageSize = queryParams.getPageSize().intValue();
            List<BTCarGetoutLogs> result = Lists.newArrayList();
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
            //并添加了多个查询条件。must 表示必须匹配的条件,mustNot 表示禁止匹配的条件,should 表示应该匹配的条件。你可以根据需要自由组合这些查询条件。
            for (ConditionVo queryParam : queryParams.getQueryParams()) {
                if (com.jinw.utils.StringUtils.isNotBlank(queryParam.getFieldName()) && queryParam.getFieldName().equals("PLATE_NO") &&
                        ObjectUtil.isNotEmpty(queryParam.getFieldValue())) {
                    MatchPhrasePrefixQueryBuilder matchQueryBuilder1 = QueryBuilders.matchPhrasePrefixQuery("plateNo", queryParam.getFieldValue());
                    // 添加到布尔查询的 should 子句中
                    boolQuery.must(matchQueryBuilder1);
                    break;
                }
            }
            for (ConditionVo queryParam : queryParams.getQueryParams()) {
                if (com.jinw.utils.StringUtils.isNotBlank(queryParam.getFieldName()) && queryParam.getFieldName().equals("CROSS_TIME") &&
                        ObjectUtil.isNotEmpty(queryParam.getFieldValue())) {
                    WildcardQueryBuilder wildcardQuery = QueryBuilders.wildcardQuery("crossTime", "*" + queryParam.getFieldValue().toString() + "*");                // 添加到布尔查询的 should 子句中
                    boolQuery.must(wildcardQuery);
                    break;
                }
            }
            sourceBuilder.query(boolQuery);
            Long count = ESUtils.selectByCount("b_t_car_getout_logs", sourceBuilder);
    
            // 设置排序规则
            sourceBuilder.sort(SortBuilders.fieldSort("crossTime").order(SortOrder.DESC));
            List<Map<String, Object>> list = ESUtils.selectByPage("b_t_car_getout_logs", sourceBuilder, pageNum, pageSize);
    
            for (Map<String, Object> map : list) {
                Map<String, Object> filteredMap = map.entrySet().stream()
                        .filter(entry -> entry.getValue() != null && StringUtils.isNotBlank(entry.getValue().toString()) && !entry.getValue().equals("null"))
                        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
                BTCarGetoutLogs peopleInoutLogs = BeanUtil.mapToBean(filteredMap, BTCarGetoutLogs.class, false, CopyOptions.create().ignoreNullValue());
                result.add(peopleInoutLogs);
            }
            int totalPage = (int) Math.ceil((double) count / pageSize);
            PageInfo<BTCarGetoutLogs> pageInfo = new PageInfo<>(pageNum, pageSize, totalPage);
            pageInfo.setRecords(result);
            return pageInfo;
        }
    本文著作权归作者 [ admin ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    首页邻居关于归档
    Copyright©2020-2026  All Rights Reserved.  Load:0.016 s
    京ICP备18019712号
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。