|
@@ -24,9 +24,9 @@ import org.elasticsearch.search.aggregations.Aggregations;
|
|
|
import org.elasticsearch.search.aggregations.bucket.terms.ParsedStringTerms;
|
|
|
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
|
|
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
|
|
|
-import org.elasticsearch.search.aggregations.metrics.avg.ParsedAvg;
|
|
|
-import org.elasticsearch.search.aggregations.metrics.max.ParsedMax;
|
|
|
-import org.elasticsearch.search.aggregations.metrics.min.ParsedMin;
|
|
|
+import org.elasticsearch.search.aggregations.metrics.ParsedAvg;
|
|
|
+import org.elasticsearch.search.aggregations.metrics.ParsedMax;
|
|
|
+import org.elasticsearch.search.aggregations.metrics.ParsedMin;
|
|
|
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
|
|
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
|
|
|
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
|
|
@@ -281,9 +281,6 @@ public class QueryDataServiceImpl implements QueryDataService {
|
|
|
/*创建 Bool 查询构建器*/
|
|
|
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
|
|
/*构建查询条件*/
|
|
|
- boolQueryBuilder.must(QueryBuilders.matchQuery("title", "三星"));
|
|
|
- boolQueryBuilder.must(QueryBuilders.matchQuery("spec", "联通3G"));
|
|
|
- boolQueryBuilder.filter().add(QueryBuilders.rangeQuery("createTime").format("yyyy").gte("2018").lte("2022"));
|
|
|
/*构建查询源构建器*/
|
|
|
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
|
|
|
searchSourceBuilder.query(boolQueryBuilder);
|
|
@@ -291,21 +288,13 @@ public class QueryDataServiceImpl implements QueryDataService {
|
|
|
/*甚至返回字段
|
|
|
如果查询的属性很少,那就使用includes,而excludes设置为空数组
|
|
|
如果排序的属性很少,那就使用excludes,而includes设置为空数组*/
|
|
|
- String[] includes = {"title", "categoryName", "price"};
|
|
|
- String[] excludes = {};
|
|
|
- searchSourceBuilder.fetchSource(includes, excludes);
|
|
|
- /*高亮设置
|
|
|
- 设置高亮三要素: field: 你的高亮字段 , preTags :前缀 , postTags:后缀*/
|
|
|
- HighlightBuilder highlightBuilder = new HighlightBuilder().field("title").preTags("<font color='red'>").postTags("</font>");
|
|
|
- highlightBuilder.field("spec").preTags("<font color='red'>").postTags("</font>");
|
|
|
- searchSourceBuilder.highlighter(highlightBuilder);
|
|
|
/*创建查询请求对象,将查询对象配置到其中*/
|
|
|
SearchRequest searchRequest = new SearchRequest(indexName);
|
|
|
searchRequest.source(searchSourceBuilder);
|
|
|
/*执行查询,然后处理响应结果*/
|
|
|
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
|
|
|
/*根据状态和数据条数验证是否返回了数据*/
|
|
|
- if (RestStatus.OK.equals(searchResponse.status()) && searchResponse.getHits().getTotalHits() > 0) {
|
|
|
+ if (RestStatus.OK.equals(searchResponse.status()) && searchResponse.getHits().getTotalHits().value > 0) {
|
|
|
SearchHits hits = searchResponse.getHits();
|
|
|
for (SearchHit hit : hits) {
|
|
|
/* 将 JSON 转换成对象*/
|
|
@@ -483,7 +472,7 @@ public class QueryDataServiceImpl implements QueryDataService {
|
|
|
/*执行查询,然后处理响应结果*/
|
|
|
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
|
|
|
/*获取总记录数*/
|
|
|
- log.info("totalHits = " + searchResponse.getHits().getTotalHits());
|
|
|
+ log.info("totalHits = " + searchResponse.getHits().getTotalHits().value);
|
|
|
/*获取聚合信息*/
|
|
|
Aggregations aggregations = searchResponse.getAggregations();
|
|
|
ParsedStringTerms categoryNameAgg = aggregations.get("categoryNameAgg");
|
|
@@ -530,7 +519,7 @@ public class QueryDataServiceImpl implements QueryDataService {
|
|
|
/*执行查询,然后处理响应结果*/
|
|
|
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
|
|
|
/*根据状态和数据条数验证是否返回了数据*/
|
|
|
- if (RestStatus.OK.equals(searchResponse.status()) && searchResponse.getHits().getTotalHits() > 0) {
|
|
|
+ if (RestStatus.OK.equals(searchResponse.status()) && searchResponse.getHits().getTotalHits().value > 0) {
|
|
|
SearchHits hits = searchResponse.getHits();
|
|
|
for (SearchHit hit : hits) {
|
|
|
/*将 JSON 转换成对象*/
|