2016-07-18 3 views
1

내 인덱스 메타 데이터탄성 검색 : 배열의 검색 결과를 제한

{ 
    "never": { 
     "aliases": {}, 
     "mappings": { 
     "userDetails": { 
      "properties": { 
       "Residence_address": { 
        "type": "nested", 
        "include_in_parent": true, 
        "properties": { 
        "Address_type": { 
         "type": "string", 
         "analyzer": "standard" 
        }, 
        "Pincode": { 
         "type": "string", 
         "analyzer": "standard" 
        }, 
        "address": { 
         "type": "string", 
         "analyzer": "standard" 
        } 
        } 
       } 
      } 
     } 
     }, 
     "settings": { 
     "index": { 
      "creation_date": "1468850158519", 
      "number_of_shards": "5", 
      "number_of_replicas": "1", 
      "version": { 
       "created": "1060099" 
      }, 
      "uuid": "v2njuC2-QwSau4DiwzfQ-g" 
     } 
     }, 
     "warmers": {} 
    } 
} 

내 설정 :

POST never 

{ 
    "settings": { 
     "number_of_shards" : 5, 
     "analysis": { 
     "analyzer": { 
      "standard": { 
       "tokenizer": "keyword", 
       "filter" : ["lowercase","reverse"] 
      } 
     } 
     } 
    } 
} 

내 데이터 :

{ 
    "took": 1, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 1, 
     "max_score": 0.375, 
     "hits": [ 
     { 
      "_index": "never", 
      "_type": "userDetails", 
      "_id": "1", 
      "_score": 0.375, 
      "_source": { 
       "Residence_address": [ 
        { 
        "address": "Omega Residency", 
        "Address_type": "Owned", 
        "Pincode": "500004" 
        }, 
        { 
        "address": "Collage of Engineering", 
        "Address_type": "Rented", 
        "Pincode": "411005" 
        } 
       ] 
      } 
     } 
     ] 
    } 
} 

내 쿼리 :

POST /never/_search?pretty 
{ 
    "query": { 
     "match": { 
       "Residence_address.address": "Omega" 
      } 
     } 
     } 

내 결과 :

{ 
    "took": 1, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 1, 
     "max_score": 0.375, 
     "hits": [ 
     { 
      "_index": "never", 
      "_type": "userDetails", 
      "_id": "1", 
      "_score": 0.375, 
      "_source": { 
       "Residence_address": [ 
        { 
        "address": "Omega Residency", 
        "Address_type": "Owned", 
        "Pincode": "500004" 
        }, 
        { 
        "address": "Collage of Engineering", 
        "Address_type": "Rented", 
        "Pincode": "411005" 
        } 
       ] 
      } 
     } 
     ] 
    } 
} 

에만 개체 포함 된 주소로 내 결과를 제한 할 수있는 방법이 있나요 = 오메가 상주 및 NOT 다른 개체에 주소를 가지는 = 콜라주 공학?

답변

1

nested 쿼리와 inner_hits으로 만 수행 할 수 있습니다. 그래도 include_in_parent: true이 있고 nested 검색어를 사용하지 않는 것으로 나타났습니다.

GET /never/_search?pretty 
{ 
    "_source": false, 
    "query": { 
    "nested": { 
     "path": "Residence_address", 
     "query": { 
     "match": { 
      "Residence_address.address": "Omega Residency" 
     } 
     }, 
     "inner_hits" : {} 
    } 
    } 
} 
+0

감사 @Andrei 스테판 : 당신은 단지 일치하는 중첩 된 객체를 얻고 싶은 경우에 당신은 inner_hitsnested에서 쿼리를 사용해야 할 것입니다. 그것은 작동합니다. – Bond