Commit ea39d55e authored by shiyu's avatar shiyu

es查询

parent 1d8b9822
......@@ -92,38 +92,36 @@ public class ItemEsDao {
SOURCE_LIST.forEach(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<>();
stateQueryList.add(FieldValue.of(1));
stateQueryList.add(FieldValue.of(10));
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())) {
Query matchQuery = MatchQuery.of(m -> m
.field("name")
.query(esSearchRequestDto.getContent())
)._toQuery();
build.must(matchQuery);
builder.from(from);
builder.query(build.build()._toQuery());
builder.from(from);
} else {
Random random = new Random();
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())))));
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);
SearchRequest searchRequest = builder.build();
logger.info("查询语句 : {}", searchRequest.toString());
logger.info("es查询语句 : {}", searchRequest.toString());
SearchResponse<ItemOfEs> searchResponse = elasticsearchClient.search(searchRequest, ItemOfEs.class);
long total = searchResponse.hits().total().value();
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