2016-06-13 25 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" 
          } 
         } 
        } 
        ] 
       } 
      } 
     } 
    } 
}