Commit ea39d55e authored by shiyu's avatar shiyu

es查询

parent 1d8b9822
...@@ -92,38 +92,36 @@ public class ItemEsDao { ...@@ -92,38 +92,36 @@ public class ItemEsDao {
SOURCE_LIST.forEach(i -> { SOURCE_LIST.forEach(i -> {
sourceQueryList.add(FieldValue.of(i)); sourceQueryList.add(FieldValue.of(i));
}); });
Query termsQuery = QueryBuilders.terms(s->s.field("source").terms(t->t.value(sourceQueryList))); Query sourceQuery = QueryBuilders.terms(s->s.field("source").terms(t->t.value(sourceQueryList)));
//展示待处理和已发布状态的商品 //展示待处理和已发布状态的商品
List<FieldValue> stateQueryList = new ArrayList<>(); List<FieldValue> stateQueryList = new ArrayList<>();
stateQueryList.add(FieldValue.of(1)); stateQueryList.add(FieldValue.of(1));
stateQueryList.add(FieldValue.of(10)); stateQueryList.add(FieldValue.of(10));
Query stateQuery = QueryBuilders.terms(s->s.field("state").terms(t->t.value(stateQueryList))); Query stateQuery = QueryBuilders.terms(s->s.field("state").terms(t->t.value(stateQueryList)));
Query shouldQuery = QueryBuilders.bool(q->q.should(termsQuery, stateQuery));
BoolQuery.Builder build = QueryBuilders.bool().filter(shouldQuery); BoolQuery.Builder build = QueryBuilders.bool().filter(stateQuery).filter(sourceQuery);
Query wildcardQuery = WildcardQuery.of(w->w.field("images").value("*_*"))._toQuery();
build.filter(wildcardQuery);
Query isDeleteQuery = TermQuery.of(t->t.field("isDeleted").value(false))._toQuery();
build.filter(isDeleteQuery);
if(StringUtils.hasLength(esSearchRequestDto.getContent())) { if(StringUtils.hasLength(esSearchRequestDto.getContent())) {
Query matchQuery = MatchQuery.of(m -> m Query matchQuery = MatchQuery.of(m -> m
.field("name") .field("name")
.query(esSearchRequestDto.getContent()) .query(esSearchRequestDto.getContent())
)._toQuery(); )._toQuery();
build.must(matchQuery); build.must(matchQuery);
builder.from(from);
builder.query(build.build()._toQuery()); builder.query(build.build()._toQuery());
builder.from(from);
} else { } else {
Random random = new Random(); Random random = new Random();
FunctionScoreQuery functionScoreQuery = FunctionScoreQuery.of(a->a.query(build.build()._toQuery()).boostMode(FunctionBoostMode.Replace) FunctionScoreQuery functionScoreQuery = FunctionScoreQuery.of(a->a.query(build.build()._toQuery()).boostMode(FunctionBoostMode.Replace)
.functions(b->b.randomScore(s->s.field("id").seed(String.valueOf(random.nextDouble()))))); .functions(b->b.randomScore(s->s.field("id").seed(String.valueOf(random.nextDouble())))));
builder.query(functionScoreQuery._toQuery()); builder.query(functionScoreQuery._toQuery());
} }
Query wildcardQuery = WildcardQuery.of(w->w.field("images").value("*_*"))._toQuery();
build.filter(wildcardQuery);
Query isDeleteQuery = TermQuery.of(t->t.field("isDeleted").value(false))._toQuery();
build.filter(isDeleteQuery);
builder.size(size); builder.size(size);
SearchRequest searchRequest = builder.build(); SearchRequest searchRequest = builder.build();
logger.info("查询语句 : {}", searchRequest.toString()); logger.info("es查询语句 : {}", searchRequest.toString());
SearchResponse<ItemOfEs> searchResponse = elasticsearchClient.search(searchRequest, ItemOfEs.class); SearchResponse<ItemOfEs> searchResponse = elasticsearchClient.search(searchRequest, ItemOfEs.class);
long total = searchResponse.hits().total().value(); long total = searchResponse.hits().total().value();
logger.info("总数据量 : {}, 耗时 : {}", total, searchResponse.took()); logger.info("总数据量 : {}, 耗时 : {}", total, searchResponse.took());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment