2014-04-17 56 views
0

我正在使用elasticsearch從我的索引中搜索文檔。但是,當我使用時,。必須和。應該在同一個查詢中,我的totalHits保持不變。我需要幫助。查詢如下。Elasticsearch totalHits仍然是

SearchResponse searchResponse = client.prepareSearch("myindex") 
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH) 
.setQuery(QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery("work_duration") 
.gte(tMin).lte(tMax)).must(QueryBuilders.rangeQuery("DOB").gte(minYear) 
.lte(maxYear)).should(QueryBuilders.termQuery("town",town.toLowerCase().trim())) 
.must(QueryBuilders.termQuery("country",country.toLowerCase().trim())) 
.must(QueryBuilders.matchQuery("content", keyword.toLowerCase().trim()))) 
.setFrom(0).setSize(167).execute().actionGet(); 
+0

應發佈您的映射和數據的示例,即索引中的文檔。 – Nate

回答

0

當混合必須和應該,應該沒有意義的總結果。要麼你匹配,需要什麼(必須),要麼你不需要。只能匹配should子句的文檔不能包含,因爲它們與must子句不匹配。 在這種情況下,應該只用於對文件進行評分,這也與這些條款相匹配,效果更好。