使用elasticsearch属性作为正则表达式

时间:2018-03-29 11:50:22

标签: regex elasticsearch

我们的HTTP路由存储在elasticsearch中,因为我们的应用程序有大量路由。

在给定的examples of elasticsearch中,通过正则表达式进行过滤,可以将正则表达式与属性值进行匹配。但由于我们的路由URL本身可以是正则表达式(例如:/ news /(d +)/。+。**),我们希望将属性值(正则表达式)与给定字符串进行匹配。

所以,作为伪JSON过滤器示例:

{
  "query": {
    "regexp_property":{
      "property": "route_settings.regex"
      "subject": "/news/12/our-article.html"
    }
  }
}

那里有人,有这种特殊情况的经验吗?

2 个答案:

答案 0 :(得分:0)

我不确定您是否可以在文档中使用现成的编译正则表达式。

只需添加另一个OR子句,其中模式可能是转义形式。

在您的示例中,我们可以使用转义的OR更改实际的pattenr \ d +。 /消息/ **((d +)| \ d +)。** / + HTML

http://rubular.com/r/ySzQqAsMFm

答案 1 :(得分:0)

所以,我发现ES 不能使用文档中定义的正则表达式,如下所示:

  

直接支持正则表达式常量。确保快速   性能,这是创建模式的唯一机制。定期   表达式总是常量并且有效地编译为单个表达式   时间。

Source

在这种特殊情况下,无法使用ES中定义的路由进行路由。