2016-03-10 99 views
0

我正在使用Java API來查詢elasticsearch。我建立的查詢是這樣的:SearchRequestBuilder:有沒有辦法要求返回所有字段?

SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index) 
      .setQuery(query) 
      .addFieldDataField("location") 
      .addField("time") 
      .addField("name"); 
SearchResponse resp = searchRequestBuilder.get(); 
for (SearchHit hit : resp.getHits().getHits()) { 
    GeoPoint point = hit.field("location").getValue(); 
    // ... etc 
} 

是否有建立請求,並剛剛獲得的所有字段沒有明確指定他們的方法嗎?看作HTTP接口並不需要你這樣做。

回答

1

我不確定您使用的是哪個版本的ES和Java客戶端,但根據此javadoc:http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/action/search/SearchRequestBuilder.html#addFields(java.lang.String...),如果您未指定任何字段,則會返回文檔的完整_source。

我會注意到的另一件事是,javadoc指定的字段必須存儲(除非你使用addFieldDataField)。確保它們在您的映射中未被標記爲忽​​略。

+0

謝謝@ hansod1,我只是錯過了。 – daphshez

相關問題