Elasticsearch:如何将正则表达式查询与过滤器结合

时间:2019-03-20 00:11:49

标签: elasticsearch

我搜索到,在某些情况下需要通过正则表达式查询进行搜索

GET my-index/_search
{
  "query": {
    "regexp":{  
      "name":".*something.*"
    }  
  }

}

有时需要过滤,例如:

GET /my-index/_search
{  
  "query":{  
      "bool":{  
      "filter":[  
           {  
              "term":{  
                 "createdByEmail.keyword":"me.email@example.com"
              }
           }
      ]
  }
}  

我想将这2个结合起来,以便仅显示名称与正则表达式匹配且createdByEmail与我发送的电子邮件地址匹配的解析。

1 个答案:

答案 0 :(得分:2)

您可以在第二个的must子句中添加第一个查询,如下所示:

{
  "query": {
    "bool": {
      "must": [
        {
          "regexp": {
            "name": ".*something.*"
          }
        }
      ],
      "filter": [
        {
          "term": {
            "createdByEmail.keyword": "me.email@example.com"
          }
        }
      ]
    }
  }
}