2016-06-13 51 views
0

我有一個索引,其中有一些文檔有一個名爲「access_type」的字段。它可以有2個值,無論是「教師」還是「學生」。 對於具有「faculty」作爲「access_type」值的文檔,將會有另一個名爲「faculties」的字段,這是一個教師姓名列表。 因此,一個示例文檔看起來象下面這樣:如何在elasticsearch查詢中實現以下條件?

{ 
    "access_type": "faculty", 
    "faculties": [ 
     "facultyId1", 
     "facultyId2", 
     "facultyId3" 
    ] 
} 

現在,如果我們有兩個輸入,一個說是爲ACCESS_TYPE,另一個是針對院系。 如果我得到以下輸入「faculty」和「facultyId4」。首先,我需要篩選出與訪問類型「faculty」匹配的所有文檔,然後在「facuultyId4」結果中搜索「faculties」字段。由於「facultyId4」不在上述文檔中,因此不應視爲命中。 我該如何將其作爲elasticsearch查詢來實現?

回答

0

希望這會工作。

GET index/type/_search 
{ 
    "query": { 
     "filtered": { 
      "filter": { 
       "and": { 
        "filters": [ 
        { 
         "query": { 
          "match": { 
           "access_type": "faculty" 
          } 
         } 
        }, 
        { 
         "query": { 
          "match": { 
           "faculties": "facultyId4" 
          } 
         } 
        } 
        ] 
       } 
      } 
     } 
    } 
}