...
|
...
|
@@ -12,51 +12,49 @@ public class SearchParamUtils { |
|
|
|
|
|
public static SearchSourceBuilder genSearchSourceBuilderFromSearchParam(SearchParam searchParam) {
|
|
|
|
|
|
final SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
|
|
|
// 搜索条件
|
|
|
if (searchParam.getFilter() != null) {
|
|
|
if(searchParam.isGeoQuery()){
|
|
|
sourceBuilder.query(QueryBuilders.boolQuery().must(searchParam.getQuery()).must(searchParam.getGeoDistanceRangeQueryBuilder()).filter(searchParam.getFilter()));
|
|
|
}else{
|
|
|
//sourceBuilder.query(QueryBuilders.filteredQuery(searchParam.getQuery(), searchParam.getFiter()));
|
|
|
sourceBuilder.query(QueryBuilders.boolQuery().must(searchParam.getQuery()).filter(searchParam.getFilter()));
|
|
|
}
|
|
|
} else {
|
|
|
if(searchParam.isGeoQuery()){
|
|
|
sourceBuilder.query(QueryBuilders.boolQuery().must(searchParam.getQuery()).must(searchParam.getGeoDistanceRangeQueryBuilder()));
|
|
|
}else{
|
|
|
sourceBuilder.query(searchParam.getQuery());
|
|
|
}
|
|
|
}
|
|
|
// 每页记录数
|
|
|
sourceBuilder.size(searchParam.getSize());
|
|
|
// 当前页起始记录
|
|
|
sourceBuilder.from(searchParam.getOffset());
|
|
|
// 显示字段,默认全部显示
|
|
|
if (searchParam.getResultFields().size() > 0) {
|
|
|
sourceBuilder.fields(searchParam.getResultFields());
|
|
|
}
|
|
|
// 高亮
|
|
|
if (searchParam.isHighlight()) {
|
|
|
for (String field : searchParam.getHighlightFields()) {
|
|
|
sourceBuilder.highlighter().field(field).preTags(searchParam.getHighlightPreTag()).postTags(searchParam.getHighlightPostTag());
|
|
|
}
|
|
|
}
|
|
|
// 分组统计
|
|
|
List<AbstractAggregationBuilder> aggregations = searchParam.getAggregationBuilders();
|
|
|
if (aggregations != null && aggregations.size() > 0) {
|
|
|
for (AbstractAggregationBuilder aggregation : aggregations) {
|
|
|
sourceBuilder.aggregation(aggregation);
|
|
|
}
|
|
|
}
|
|
|
// 排序字段
|
|
|
for (String sortField : searchParam.getSortFields().keySet()) {
|
|
|
String sortValue = searchParam.getSortFields().get(sortField);
|
|
|
sourceBuilder.sort(sortField, SortOrder.ASC.toString().equals(sortValue) ? SortOrder.ASC : SortOrder.DESC);
|
|
|
}
|
|
|
|
|
|
|
|
|
return sourceBuilder;
|
|
|
}
|
|
|
|
|
|
final SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
|
|
|
// 搜索条件
|
|
|
if (searchParam.getFilter() != null) {
|
|
|
if(searchParam.isGeoQuery()){
|
|
|
sourceBuilder.query(QueryBuilders.boolQuery().must(searchParam.getQuery()).must(searchParam.getGeoDistanceRangeQueryBuilder()).filter(searchParam.getFilter()));
|
|
|
sourceBuilder.sort(searchParam.getGeoDistanceSortBuilder());
|
|
|
}else{
|
|
|
//sourceBuilder.query(QueryBuilders.filteredQuery(searchParam.getQuery(), searchParam.getFiter()));
|
|
|
sourceBuilder.query(QueryBuilders.boolQuery().must(searchParam.getQuery()).filter(searchParam.getFilter()));
|
|
|
// 排序字段
|
|
|
for (String sortField : searchParam.getSortFields().keySet()) {
|
|
|
String sortValue = searchParam.getSortFields().get(sortField);
|
|
|
sourceBuilder.sort(sortField, SortOrder.ASC.toString().equals(sortValue) ? SortOrder.ASC : SortOrder.DESC);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// 每页记录数
|
|
|
sourceBuilder.size(searchParam.getSize());
|
|
|
// 当前页起始记录
|
|
|
sourceBuilder.from(searchParam.getOffset());
|
|
|
// 显示字段,默认全部显示
|
|
|
if (searchParam.getResultFields().size() > 0) {
|
|
|
sourceBuilder.fields(searchParam.getResultFields());
|
|
|
}
|
|
|
// 高亮
|
|
|
if (searchParam.isHighlight()) {
|
|
|
for (String field : searchParam.getHighlightFields()) {
|
|
|
sourceBuilder.highlighter().field(field).preTags(searchParam.getHighlightPreTag()).postTags(searchParam.getHighlightPostTag());
|
|
|
}
|
|
|
}
|
|
|
// 分组统计
|
|
|
List<AbstractAggregationBuilder> aggregations = searchParam.getAggregationBuilders();
|
|
|
if (aggregations != null && aggregations.size() > 0) {
|
|
|
for (AbstractAggregationBuilder aggregation : aggregations) {
|
|
|
sourceBuilder.aggregation(aggregation);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return sourceBuilder;
|
|
|
}
|
|
|
|
|
|
|
|
|
} |
...
|
...
|
|