我正在使用Java API来查询elasticsearch。我正在以这种方式构建查询:
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接口并不需要你这样做。
答案 0 :(得分:1)
我不确定您使用的是哪个版本的ES和Java客户端,但根据此javadoc:http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/action/search/SearchRequestBuilder.html#addFields(java.lang.String...),如果您未指定任何字段,则将返回文档的完整_source
我要注意的另一件事是javadoc指定必须存储的字段(除非你使用addFieldDataField)。确保它们在映射中没有被标记为忽略。