SearchRequestBuilder?searchRequestBuilder?=?transportClient.prepareSearch(index);
if?(StringUtils.isNotEmpty(type))?{
????searchRequestBuilder.setTypes(type.split(","));
}
searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH);
//?需要顯示的字段,逗號(hào)分隔(缺省為全部字段)
if?(StringUtils.isNotEmpty(fields))?{
????searchRequestBuilder.setFetchSource(fields.split(","),?null);
}
//排序字段
if(CollectionUtils.isNotEmpty(sortList)){
????for?(EsSort?esSort?:?sortList){
????????searchRequestBuilder.addSort(esSort.getFieldName(),esSort.getSortOrder());
????}
}
//?查詢字段
if(CollectionUtils.isNotEmpty(matchList)){
????for?(EsMatchSearch?esMatchSearch?:?matchList){
????????if?(matchPhrase?==?Boolean.TRUE)?{
????????????boolQuery.must(QueryBuilders.matchPhraseQuery(esMatchSearch.getFieldName(),?esMatchSearch.getValue()));
????????}?else?{
????????????boolQuery.must(QueryBuilders.matchQuery(esMatchSearch.getFieldName(),?esMatchSearch.getValue()));
????????}
????}
}
//?范圍查詢字段
if(CollectionUtils.isNotEmpty(rangeList)){
????for?(EsRangeSearch?esRangeSearch?:?rangeList){
????????RangeQueryBuilder?rangeQueryBuilder?=?QueryBuilders.rangeQuery(esRangeSearch.getFieldName());
????????if(StringUtils.isNotBlank(esRangeSearch.getFrom())){
????????????rangeQueryBuilder.from(esRangeSearch.getFrom());
????????}
????????if(StringUtils.isNotBlank(esRangeSearch.getTo())){
????????????rangeQueryBuilder.to(esRangeSearch.getTo());
????????}
????????rangeQueryBuilder.includeLower(true)
?????????????????????????.includeUpper(true);
????????boolQuery.must(rangeQueryBuilder);
????}
}
searchRequestBuilder.setQuery(boolQuery);
//?分頁應(yīng)用
searchRequestBuilder.setFrom(currentPage).setSize(pageSize);
//?設(shè)置是否按查詢匹配度排序
searchRequestBuilder.setExplain(true);
//?執(zhí)行搜索,返回搜索響應(yīng)信息
SearchResponse?searchResponse?=?searchRequestBuilder.execute().actionGet();
long?totalHits?=?searchResponse.getHits().totalHits;
long?length?=?searchResponse.getHits().getHits().length;
logger.debug("共查詢到[{}]條數(shù)據(jù),處理數(shù)據(jù)條數(shù)[{}]",?totalHits,?length);用查詢條件直接在es里查是正常的,通過代碼的話結(jié)果集里總是少一條記錄。求問有可能是什么原因呢?
添加回答
舉報(bào)
0/150
提交
取消