2013-12-18 90 views
2

我有這樣的映射:彈性搜索多個術語

"profile": { 
     "properties": {    
      "educations": { 
       "properties": { 
        "university": { 
         "type": "string" 
        }, 
        "graduation_year": { 
         "type": "string" 
        } 
       } 
      } 
     } 
    } 

這顯然持有人的教育歷史。每個人都可以有多種教育。我想要做的是搜索「2012」中從「SFU」畢業的人。要做到這一點,我使用過濾的搜索:

"filtered": { 
    "filter": { 
     "and": [ 
      { 
       "term": { 
       "educations.university": "SFU" 
       } 
      }, 
      { 
       "term": { 
       "educations.graduation_year": "2012" 
       } 
      } 
     ] 
    } 

但是這個查詢的作用是找到誰擁有「SFU」文件和「2012」,在他們的教育,所以這個文件將匹配,這是錯誤的:

educations[0] = {"university": "SFU", "graduation_year": 2000} 
educations[1] = {"university": "UBC", "graduation_year": 2012} 

是否有無論如何我可以過濾每個教育的條款?

回答