1

有什么方法可以在 CountRequestBuilder 中设置过滤器,就像我们在 SearchRequestBuilder 中的 setFilter() 一样。因此,我无法使用 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();

还有其他方法可以计算搜索过滤器的数量吗?

4

1 回答 1

2

顶级过滤器是一种特殊结构,仅应在少数特定情况下使用,例如过滤结果而不过滤相应的方面。因此,解决此问题的最佳方法是将顶级过滤器替换为QueryBuilders.filteredQuery(...). 或者,您可以使用SearchType.COUNT而不是SearchType.DFS_QUERY_THEN_FETCH只取回计数。

于 2013-08-20T19:45:55.160 回答