我正在使用Java查询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接口并不需要您这样做。
发布于 2016-03-10 17:34:12
我不确定您所处的ES和java客户机的哪个版本,但是根据这个javadoc:http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/action/search/SearchRequestBuilder.html#addFields(java.lang.String...),如果您不指定任何字段,那么文档的完整_source将被返回。
我要注意的另一件事是,javadoc指定了必须存储的字段(除非使用addFieldDataField)。确保它们在映射中不会被标记为被忽略。
https://stackoverflow.com/questions/35923250
复制相似问题