spring data elasticsearch 打印sql(DSL)語句

剛開始使用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章