2016-12-22 8 views
0

私は、Spring Data Elasticsearchをリポジトリクラスとともに使用しています。ここで私はを通じて照会したい私のオブジェクトは、次のとおりです。Spring Data Elasticsearchリポジトリ:入れ子オブジェクトのクエリ

public class Person{ 
    String firstName; 
    String lastName; 
    Location location; 
} 

public class Location{ 
    String name; 
} 

@Query("{\"bool\" : {" 
      + "\"should\" : [ " 
       + "{" 
        + "\"term\" : {" 
         + "\"firstName\" : \"?0\"" 
        + "}" 
       + "}," 
       + "{" 
        + "\"term\" : {" 
         + "\"lastName\" : \"?0\"" 
        + "}" 
       + "}," 
       + "{" 
        + "\"term\" : {" 
         + "\"location.name\" : \"?0\"" 
        + "}" 
       + "}" 
      + "]" 
    + "}}") 
List<Person> findByFirstNameOrLastName(String term); 

私はlocation.nameで検索することはできません - どのように私は、クエリを変更することができ、これが動作すること?

UPDATEマッピング

あなたのマッピングがロケーションオブジェクトがネストされている場合は、ネストされたクエリを使用する必要がありますどのように見えるか
{ 
    "properties" : { 
     "firstName": { 
      "type": "string", 
      "analyzer": "firstNameNGram" 
     }, 
     "lastName": { 
      "type": "string", 
      "analyzer": "firstNameNGram" 
     }, 
     "location": { 
      "type": "nested", 
      "properties": { 
       "name": { 
        "type": "string", 
        "analyzer": "firstNameNGram" 
       }, 
       "company": { 
        "type": "nested", 
        "properties": { 
         "name": { 
          "type": "string", 
          "analyzer": "firstNameNGram" 
         } 
        } 
       } 
      } 
     } 
    } 
} 

答えて

1

更新
"nested" : { 
    "query" : { 
    "bool" : { 
     "should" : [ 
     { 
      "term" : { 
      "location.name" : { 
       "value" : "?0" 
      } 
      } 
     } 
     ] 
    } 
    }, 
    "path" : "location" 
} 
+0

nested query

クエリは次のようになります私の質問w iが追加されました –

+0

偉大な、それは私のために働いた! –

関連する問題