gpt4 book ai didi

java - Elasticsearch Java API 不返回命中字段

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:25:32 24 4
gpt4 key购买 nike

我对 elasticsearch 的 java api 有疑问。

当我进行这样的搜索时:

MatchQueryBuilder query = QueryBuilders.matchQuery("_type", "booking");

SearchResponse searchResponse = client.prepareSearch().setQuery(query).execute().actionGet();

for (SearchHit hit : searchResponse.getHits()){
Map<String, SearchHitField> fields = hit.getFields();
System.out.println(fields.size());
}

我的回复从来没有字段,有人可以帮助我吗? enter image description here

我正在使用:

Elasticsearch Java API 1.4.0 Elasticsearch 1.4.0

我的数据看起来像

{
"_index": "bookings",
"_type": "booking",
"_id": "50245171",
"_score": 1,
"_source": {
"field1": "value1",
"field2": "value2",
"field3": "value3",
...
}
}

最佳答案

您是否尝试过将 .addFields() 添加到您的查询中?

SearchResponse searchResponse = client.prepareSearch().setQuery(query).addFields("field1", "field2",...).execute().actionGet();

我不确定所有细节,但我相信 elasticsearch 会尝试向您发送尽可能少的数据。这是有道理的,因为它应该又快又轻。

无论如何,您是否有机会索引 Booking 对象?因为如果您再次需要整个对象,您也可以只获取源并将其转换回其原始 Booking 对象。例如:

ObjectMapper mapper = new ObjectMapper();
Booking booking = mapper.readValue(hit.getSourceAsString(), Booking.class);

ObjectMapper 来自 com.fasterxml.jackson.databind.ObjectMapper(我相信应该包含在 elasticsearch 中)。

关于java - Elasticsearch Java API 不返回命中字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27150656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com