剛開始使用spring data elasticsearch 會有有一個疑問就是:能不能像操作mysql那樣打印sql日誌,也便於分析啊,其實特別簡單,具體如下的代碼所示:
/**
* 高亮顯示
* @param keyword
* @param pageNum
* @param pageSize
* @return
*/
@GetMapping("/getUserList2")
public Page<User> query3( String keyword, Integer pageNum, Integer pageSize) {
if(pageNum == null || pageNum <= 0){
pageNum = 1;
}
if(pageSize == null || pageSize <= 0){
pageSize = 5;
}
//獲取QueryBuilder
BoolQueryBuilder querryBuilder = this.getQuerryBuilder(keyword,"三1006");
NativeSearchQueryBuilder nativeSearchQueryBuilder = this.getWildcardQuery(keyword, "myes", "myuser");
//關聯分頁、過濾器
nativeSearchQueryBuilder
.withIndices("myes")
.withTypes("myuser")
//添加bool過濾器
.withFilter(querryBuilder)
.withSort(SortBuilders.fieldSort("age").order(SortOrder.DESC))
//添加分頁條件
.withPageable(PageRequest.of(pageNum - 1, pageSize));
//查詢結果
NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
//打印filter 的dsl語句
log.info(searchQuery.getFilter().toString());
System.out.println("=================");
//log.info(searchQuery.get);
//打印query的 的dsl語句
System.out.println(nativeSearchQueryBuilder.build().getQuery().toString());
AggregatedPage<User> esEntityList = estemplate.queryForPage(nativeSearchQueryBuilder.build(), User.class);
return esEntityList;
}
完整代碼地址: https://github.com/Dr-Water/springdata-es-action