欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > JAVA --ES常用查询语句

JAVA --ES常用查询语句

2024/10/25 14:22:10 来源:https://blog.csdn.net/qq_41867674/article/details/142558136  浏览:    关键词:JAVA --ES常用查询语句

关键字查询

 NativeQueryBuilder nativeQueryBuilder = new NativeQueryBuilder();BoolQuery.Builder queryBool = QueryBuilders.bool();List<Query> queryList = Lists.newArrayList();
queryList.add(QueryBuilders.matchPhrase(a -> a.field("spell").query(keyword)));
nativeQueryBuilder.withQuery(queryBool.should(queryList).build()._toQuery());
// 放开最大限制
nativeQueryBuilder.withTrackTotalHits(true);
//分页
Pageable pageable = Pageable.ofSize(publicSpuQuery.getPageSize()).withPage(publicSpuQuery.getPageNum() - 1);
nativeQueryBuilder.withPageable(pageable);
// 查询开始
SearchHits<EsPublicSpuVO> search = elasticsearchTemplate.search(nativeQueryBuilder.build(), EsPublicSpuVO.class, IndexCoordinates.of(PublicSpuDocument.DISTRIBUTED_ID_KEY));
// 接返回值
BeanUtil.copyList(search.stream().map(SearchHit::getContent).collect(Collectors.toList()), EsPublicSpuVO.class

//精确与模糊查询

NativeQueryBuilder nativeQueryBuilder = new NativeQueryBuilder();
BoolQuery.Builder filterBool = QueryBuilders.bool();
List<Query> filterList = Lists.newArrayList();
// 模糊分词搜索
filterList.add(QueryBuilders.match(a -> a.field("otcMark").query(String.valueOf(publicSpuQuery.getOtcMark()))));
// 模糊全词搜索
filterList.add(QueryBuilders.matchPhrase(a -> a.field("spell").query(String.valueOf(publicSpuQuery.getSpell()))));
// 精确查询
filterList.add(QueryBuilders.term(a -> a.field("confirmStatus").value(String.valueOf(payInfoEsDTO.getConfirmStatus()))));
// 集合查询
filterList.add(QueryBuilders.terms(a -> a.field("gyCode.keyword").terms(b -> b.value(publicSpuQuery.getGyCodeList().stream().map(FieldValue::of).toList()))));
// 时间范围查
filterList.add(QueryBuilders.range(b -> b.field("createTime").gte(JsonData.of(publicSpuQuery.getStartTime())).lte(JsonData.of(publicSpuQuery.getEndTime()))));
// 不等于条件查询
filterList.add(QueryBuilders.bool().mustNot(QueryBuilders.match(a -> a.field("otcMark").query(String.valueOf(publicSpuQuery.getNotOtcMark())))).build()._toQuery());nativeQueryBuilder.withFilter(filterBool.filter(filterList).build()._toQuery());
nativeQueryBuilder.withSort(Sort.by(Sort.Order.desc("updateTime")));
// 放开最大限制
nativeQueryBuilder.withTrackTotalHits(true);
//分页
Pageable pageable = Pageable.ofSize(publicSpuQuery.getPageSize()).withPage(publicSpuQuery.getPageNum() - 1);
nativeQueryBuilder.withPageable(pageable);
SearchHits<EsPublicSpuVO> search = elasticsearchTemplate.search(nativeQueryBuilder.build(), EsPublicSpuVO.class, IndexCoordinates.of(PublicSpuDocument.DISTRIBUTED_ID_KEY));
if (CollectionUtil.isNotEmpty(search)) {
esPublicSpuVOList.addAll(BeanUtil.copyList(search.stream().map(SearchHit::getContent).collect(Collectors.toList()), EsPublicSpuVO.class));
}

**

// 查询不包含集合内的数据

**

NativeQueryBuilder nativeQueryBuilder = new NativeQueryBuilder();
BoolQuery.Builder filterBool = QueryBuilders.bool();
List<Query> notTermListQuery = Lists.newArrayList();
notTermListQuery.add(QueryBuilders.terms(a -> a.field("_id").terms(b -> b.value(publicSpuQuery.getSpuIds().stream().map(FieldValue::of).toList()))));
filterBool.mustNot(notTermListQuery);
nativeQueryBuilder.withFilter(filterBool.filter(filterList).build()._toQuery());
nativeQueryBuilder.withSort(Sort.by(Sort.Order.desc("createTime")));
SearchHits<ESPublicSpuVO> search = elasticsearchTemplate.search(nativeQueryBuilder.build(), ESPublicSpuVO.class, IndexCoordinates.of(PublicSpuDocument.DISTRIBUTED_ID_KEY));
if(CollectionUtil.isNotEmpty(search)){
esPageVO.setList(BeanUtil.copyList(search.stream().map(SearchHit::getContent).collect(Collectors.toList()), ESPublicSpuVO.class));}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com