项目地址:https://gitee.com/diannaodongshizhang/elastic-search
布尔查询
VehicleController
@PostMapping("/searchcreatedsince/{date}")
public List<Vehicle> searchCreateSince(@RequestBody final SearchRequestDTO dto,
@PathVariable
@DateTimeFormat(pattern = "yyyy-MM-dd")
final Date date){
return service.searchCreatedSince(dto,date);
}
SearchUtil
public List<Vehicle> searchCreatedSince(final SearchRequestDTO dto,final Date date){
final SearchRequest request = SearchUtil.buildSearchRequest(
Indices.VEHICLE_INDEX,
dto,
date
);
return searchInternal(request);
}
public static SearchRequest buildSearchRequest(final String indexName,
final SearchRequestDTO dto,
final Date date){
try{
final QueryBuilder searchQuery = getQueryBuilder(dto);
final QueryBuilder dateQuery = getQueryBuilder("created", date);
final BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
.must(searchQuery)
.must(dateQuery);
/**
* 构建查询语句
*/
SearchSourceBuilder builder = new SearchSourceBuilder()
.postFilter(boolQuery);
/**
* 对某个字段升降序排列
*/
if (dto.getSortBy()!=null){
builder=builder.sort(
dto.getSortBy(),
dto.getOrder()!=null?dto.getOrder(): SortOrder.ASC
);
}
SearchRequest request = new SearchRequest(indexName);
request.source(builder);
return request;
}catch (final Exception e){
e.printStackTrace();
return null;
}
}
实验结果