2013-08-20 18 views
1

有沒有什麼辦法像在我們的SearchRequestBuilder中有setFilter()那樣在CountRequestBuilder中設置過濾器。正因爲如此,我無法使用CountRequestBuilder並使用如下彈性搜索 - 在CountRequestBuilder中設置過濾器的任何方式

SearchRequestBuilder searchBuilder = client.prepareSearch(indexName).setTypes(typeName).setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setExplain(true);   
SearchResponse response = searchBuilder.execute().actionGet(); 
Long count = response.getHits().getTotalHits(); 

任何其他方式獲得的搜索過濾器的數量?

回答

2

頂級過濾器是特殊的構造,應該只在少數特殊情況下使用,例如過濾結果而不過濾相應的構面。因此,解決此問題的最佳方法是用QueryBuilders.filteredQuery(...)替換頂級過濾器。或者,您可以使用SearchType.COUNT而不是SearchType.DFS_QUERY_THEN_FETCH來重新計算。

+0

謝謝。它效果很好。 –