我有一個包含子文檔和父文檔的索引,我正在使用子查詢父母。我得到搜索結果但結果不一致。索引是靜態的,在這些測試中我沒有添加任何東西。當TopChildrenQueryBuilder查詢的最大值發生變化時,ElasticSearch頂部結果會有所不同
我削成碼到最基礎的:
\t
int max = 50;
String query = "politics";
SearchRequestBuilder builder = client.prepareSearch("users").setSearchType(SearchType.QUERY_THEN_FETCH);
QueryBuilder b = QueryBuilders.topChildrenQuery("children", QueryBuilders.termQuery("name", query));
builder.setQuery(b);
builder.setFrom(0).setSize(max);
SearchResponse response = builder.execute().actionGet();
SearchHits hits = response.getHits();
List<Map> users = new ArrayList<Map>();
System.err.printlnt(hits.getTotalHits());
for(SearchHit hit : hits.getHits())
{
//do stuff
的問題是,當我改變最大它改變了頂部返回結果。前幾個結果轉移,但基於我使用的最大值是一致的。隨着我增加max,前幾項結果似乎在相關性上增加,幾乎就像它沒有實際搜索完整索引,除非我按下它。另外,它聲稱它發現的總點擊次數是變化的,隨着最大值增加,它會增加。最多10個,它表示總點擊率爲93.對於100,它表示731.對於1000,它表示8040.
這是TopChildrenQueryBuilder的錯誤,還是我做錯了什麼?