【发布时间】:2014-05-09 10:23:03
【问题描述】:
在使用 JAVA API 从 elasticsearch 搜索记录时,我想获取嵌套对象。我使用 addFields 方法获取特定字段,但无法检索嵌套对象值。
使用 Elastic 搜索 1.1.1 版
我的代码:
我有一个包含 countryId、countryName 和 states 字段的文档。 States 是一个嵌套的文档列表,它会有状态列表。
SearchRequestBuilder builder = client.prepareSearch("tests").setTypes("country")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH).addFields("countryName", "states");
MatchQueryBuilder mqb;
mqb = QueryBuilders.matchPhrasePrefixQuery("name", "ind");
builder.setQuery(mqb);
SearchResponse response = builder.execute().actionGet();
SearchHit[] documents = response.getHits().getHits();
System.out.println(documents.length);
我想获取 states(嵌套对象)和 countryName 值。
{"states" : ["stateId" : "1000", "name" : "Kerala"], ["stateId" : "1001", "name" : "Tamil Nadu"]}
{"countryName" : "India"}
问题: - 结果文档大小为零。无法搜索任何数据。如果我从给定字段中删除嵌套对象列表(状态),则能够搜索文档并获取字段值。
【问题讨论】:
-
您是否返回了 0 个文档或一些文档但没有字段?
标签: java elasticsearch