es6.2.4,使用bool查詢查出的結(jié)果,SearchResponse的Hits[]總是比totalHits少一條記錄
searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH); //?查詢字段 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é)果集里總是少一條記錄。求問有可能是什么原因呢?
2020-10-15
和哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈和!