无法使用ElasticSearch Java API检索嵌套对象

时间:2014-05-09 10:23:04

标签: java elasticsearch

使用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"}

问题: - 结果文档大小为零。无法搜索任何数据。如果我从给定字段中删除嵌套对象列表(状态),则能够搜索文档并获取字段值。

0 个答案:

没有答案