无法使用ElasticSearch Java API检索嵌套对象
在使用JavaAPI从elasticsearch搜索记录时,我希望得到嵌套对象。我使用了addFields方法来获取特定字段,但无法检索嵌套的对象值 使用弹性搜索版本1.1.1 我的代码: 我有一个文档,其字段为countryId、countryName和states。状态是一个嵌套的文档列表,它将具有状态列表无法使用ElasticSearch Java API检索嵌套对象,java,
elasticsearch,Java,
elasticsearch,在使用JavaAPI从elasticsearch搜索记录时,我希望得到嵌套对象。我使用了addFields方法来获取特定字段,但无法检索嵌套的对象值 使用弹性搜索版本1.1.1 我的代码: 我有一个文档,其字段为countryId、countryName和states。状态是一个嵌套的文档列表,它将具有状态列表 SearchRequestBuilder builder = client.prepareSearch("tests").setTypes("country")
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"}
问题:
-结果文档大小为零。无法搜索任何数据。如果从给定字段中删除嵌套对象列表(状态),则可以搜索文档并获取字段值。您需要在查询中使用以下内容: 使用setFetchSource(字符串[]包含\个字段,字符串[]排除\个字段) 嵌套字段不是叶字段,它们需要直接从源中检索。 代码: 您可以在结果中对它们进行迭代 嗯,,
RR.您是否取回了0个文档或一些文档但没有字段?
SearchRequestBuilder builder = client.prepareSearch("tests").setTypes("country")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setFetchSource(new String[]{"states","countryName"},new String[]{});