2016-07-12 12 views
0

国名が「インド」のすべての州を取得したいと考えています。 なぜ弾性検索で入れ子になったデータを検索できないのですか?ElasticSearchのネストされた検索が機能していませんか?

例外:ネストされた:QueryParsingException [[userinfo] [ネストされた]ネストされたオブジェクトがパス[ネーミング]のネストされたオブジェクトではありません];

のuserinfoはインデックス名と状態がタイプ

 POST /userinfo/state/_search?v 
     { 
      "query": { 
       "nested": { 

        "path": "country", 
        "query": { 
         "match": { 
          "country.name": "India" 
         } 
        } 
       } 
      } 
     } 

     ------------------------------ 
     My Json is for state type : 

     { 
        "_index": "userinfo", 
        "_type": "state", 
        "_id": "35", 
        "_score": 1, 
        "_source": { 
         "id": "35", 
         "name": "County Down", 
         "abbreviation": "DWN", 
         "isDeleted": 0, 
         "country": { 
          "id": "3", 
          "name": "United Kingdom", 
          "abbreviation": "UK", 
          "isDeleted": 0 
         } 
        } 
       } 

     ------------------------------------- 

</br></br> 
     State.java 

     package com.elastic.entity; 

     import org.springframework.data.annotation.Id; 
     import org.springframework.data.elasticsearch.annotations.Document; 
     import org.springframework.data.elasticsearch.annotations.Field; 
     import org.springframework.data.elasticsearch.annotations.FieldType; 

     @Document(indexName = "userinfo", type = "state") 
     public class State { 


      @Id 
      private String id; 

      private String name; 
      private String abbreviation; 
      private int isDeleted; 

      @Field(type = FieldType.Nested) 
      private Country country; 



      public State() 
      { 
       super(); 
      } 

      public State(String id, String name, String abbreviation, int isDeleted, Country country) { 
       super(); 
       this.id = id; 
       this.name = name; 
       this.abbreviation = abbreviation; 
       this.isDeleted = isDeleted; 
       this.country = country; 
      } 


      public String getId() { 
       return id; 
      } 
      public void setId(String id) { 
       this.id = id; 
      } 
      public String getName() { 
       return name; 
      } 
      public void setName(String name) { 
       this.name = name; 
      } 
      public String getAbbreviation() { 
       return abbreviation; 
      } 
      public void setAbbreviation(String abbreviation) { 
       this.abbreviation = abbreviation; 
      } 
      public int getIsDeleted() { 
       return isDeleted; 
      } 
      public void setIsDeleted(int isDeleted) { 
       this.isDeleted = isDeleted; 
      } 
      public Country getCountry() { 
       return country; 
      } 
      public void setCountry(Country country) { 
       this.country = country; 
      } 




     } 

答えて

1
を持つすべての文書を与えるです:私は実行しています}]


クエリ

Try This with match : 

POST /index/type/_search?v 
{ 
    "query": { 
     "match": { 
      "state.country.name": "India" 
     } 
    } 
} 
0

これはあなたの国インド

{ 
    "query": { 
    "query_string": { 
     "default_field": "country.name" 
     , "query": "India" 
    } 
    } 
} 
関連する問題