public List<ReqProductInfoEsVo> searchProductInfoByKey(ReqProductSearchVO vo) { SearchRequest searchRequest = new SearchRequest(EsOperateTables.BASE_PRODUCT_INFO_SAP.getValue()); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //sourceBuilder.fetchSource(PRODUCT_STATUS_FIELDS, null); BoolQueryBuilder searchBuilder = QueryBuilders.boolQuery(); if(StringUtils.isNumeric(vo.getSearchKey())){ searchBuilder.should(QueryBuilders.prefixQuery("product_code",vo.getSearchKey())) .should(QueryBuilders.termQuery("product_code",vo.getSearchKey())) .should(QueryBuilders.prefixQuery("bar_code",vo.getSearchKey())) .should(QueryBuilders.termQuery("bar_code",vo.getSearchKey())); if(StringUtils.isNotEmpty(vo.getRootCategoryCode())){ searchBuilder.filter(QueryBuilders.termQuery("root_category_code", vo.getRootCategoryCode())); } searchBuilder.minimumShouldMatch(1); }else if (StringUtils.isNotEmpty(vo.getSearchKey())){ searchBuilder.must(QueryBuilders.queryStringQuery("product_name:"+vo.getSearchKey()).defaultOperator(QueryStringQueryBuilder.DEFAULT_OPERATOR)); searchBuilder.must(QueryBuilders.queryStringQuery(vo.getSearchKey()).field("product_name")); if(StringUtils.isNotEmpty(vo.getRootCategoryCode())){ searchBuilder.must(QueryBuilders.termQuery("root_category_code", vo.getRootCategoryCode())); } }else{ return Collections.emptyList(); } sourceBuilder.query(searchBuilder); sourceBuilder.timeout(new TimeValue(120, TimeUnit.SECONDS)); sourceBuilder.from(0); sourceBuilder.size(vo.getSize()); searchRequest.source(sourceBuilder); log.info("terms查询DSL语句:" + searchRequest.toString()); return returnSearchShopProductStatusAsyncByLocation(searchRequest); }
es index keyword和text java查询实现
最新推荐文章于 2023-10-08 11:11:58 发布