0
我有一个问题,当我运行一个使用java api的弹性搜索时,我得到的结果...但是当我尝试从结果中提取值时没有字段。ElasticSearch命中没有字段
ElasticSearch V5.3.1
弹性API:org.elasticsearch.client:运输V5.3.0
我的代码:
SearchRequestBuilder srb = client.prepareSearch("documents").setTypes("documents").setSearchType(SearchType.QUERY_THEN_FETCH).setQuery(qb).setFrom(0).setSize((10)).setExplain(false);
srb.addDocValueField("title.raw");
SearchResponse response = srb.get();
response.getHits().forEach(new Consumer<SearchHit>() {
@Override
public void accept(SearchHit hit) {
System.out.println(hit);
Map<String, SearchHitField> fields = hit.getFields();
Object obj = fields.get("title.raw").getValue();
}
});
当在foreach运行OBJ总是回来空。 Fields有一个关键字title.raw的项目,它有一个SearchHitField。
我明白了。所以你说的是,我的领域都没有被标记为存储,这就是为什么他们不可用。但是我可以从源访问数据。 – Seamus
遵循你的建议,我使用了源代码: 'Map source = hit.getSource();' 这让我可以访问所有的字段。谢谢! –
Seamus