如何使用普通字符串将带有弹性搜索的正则表达式字符串匹配

时间:2019-03-29 06:46:39

标签: elasticsearch

我将文件存储在elasticsearch中,其中一个字段是regexp表达式,然后希望使用普通字符串来敲击该文件,这可能吗? 例如,在elasticsearch中,有一个像这样的文档:

{
    "service_id": "service1",
    "regexp_url": "abc.*"
}

然后我希望使用字符串“ abcde”打文档,这可能吗?

详细的用户案例是: 我有一个网站,每个页面对应一个服务,不同的页面也可以对应相同的服务。 现在我有一个es索引,它包含两个字段:service_id,regexp_url(这意味着与url regexp匹配的页面的url将被映射到服务),现在我打开一个带有url的页面:“ abcde”,文档就像上面,我要点击文档以找到serviceId。

1 个答案:

答案 0 :(得分:-1)

 POST <INDEX>/_search
 {
  "size": 0,
  "query": {
  "bool": {
      "filter": [
        {
      "regexp": {
        "<YOUR_FIELD>": {
          "value": "<YOUR_REGEX_PATTER"
        }
      }
    }
  ]
}
}

更多参考资料:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html