使用JAVA API从elasticsearch搜索记录时,我想获得嵌套对象。我使用 addFields 方法获取特定字段,但无法检索嵌套对象值。
使用Elastic search version 1.1.1
我的代码:
我的文档包含 countryId , countryName 和州字段。 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);
我想获取状态(嵌套对象)和countryName值。
{"states" : ["stateId" : "1000", "name" : "Kerala"], ["stateId" : "1001", "name" : "Tamil Nadu"]}
{"countryName" : "India"}
问题: - 结果文档大小为零。无法搜索任何数据。如果我从给定字段中删除嵌套对象列表(状态),则能够搜索文档并获取字段值。