关键字查询
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));}