0
私は、Java APIを使用して弾性を使って検索を実行すると結果が返ってきますが、結果から値を抽出しようとするとフィールドがありません。ElasticSearchヒットにフィールドがありません
ElasticSearchのv5.3.1
弾性API:org.elasticsearch.client:輸送V5.3.0
マイコード:forEachのがobjを実行
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();
}
});
は常に戻って来ているヌル。フィールドにはtitle.rawのキーを持つ項目があり、SearchHitFieldがあります。
です。だからあなたが言っているのは、私のフィールドのどれもが保存されているとマークされていないからです。しかし、私はソースからデータにアクセスできます。 – Seamus
あなたのアドバイスに従って、私はソースを使用しました: 'Map source = hit.getSource();' すべてのフィールドにアクセスできます。ありがとう! –
Seamus