【问题标题】:How to implement the following condition in elasticsearch query?如何在elasticsearch查询中实现以下条件?
【发布时间】:2017-03-27 12:20:54
【问题描述】:

我有一个索引,其中一些文档的字段名为 "access_type" 。它可以有 2 个值,“教师”或“学生”。 对于“access_type”值为“faculty”的文档,将有另一个名为“faculties”的字段,它是一个教师名称列表。 因此示例文档如下所示:

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

现在,如果我们有两个输入,则一个用于 access_type,另一个用于 faculties。 如果我得到以下输入 "faculty" 和 "facultyId4" 。首先,我需要过滤掉与访问类型“faculty”匹配的所有文档,然后在结果结果中,“facuultyId4”应该针对“faculties”字段进行搜索。由于“facultyId4”不在上述文档中,因此不应将其视为命中。 如何将其实现为弹性搜索查询?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    发布http://your.elastic.host:9200/index/type/_search

    {
      "query": {
        "filtered": {
          "query": {
            "match_all": {}
          },
          "filter": {
            "bool": {
              "must": [
                {
                  "term": {
                    "access_type": "faculty"
                  }
                },
                {
                  "term": {
                    "faculties": "facultyId4"
                  }
                }
              ]
            }
          }
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      希望这能奏效。

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

      【讨论】:

        猜你喜欢
        • 2011-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-28
        • 1970-01-01
        • 2016-09-22
        • 1970-01-01
        相关资源
        最近更新 更多