我们的HTTP路由存储在elasticsearch中,因为我们的应用程序有大量路由。
在给定的examples of elasticsearch中,通过正则表达式进行过滤,可以将正则表达式与属性值进行匹配。但由于我们的路由URL本身可以是正则表达式(例如:/ news /(d +)/。+。**),我们希望将属性值(正则表达式)与给定字符串进行匹配。
所以,作为伪JSON过滤器示例:
{
"query": {
"regexp_property":{
"property": "route_settings.regex"
"subject": "/news/12/our-article.html"
}
}
}
那里有人,有这种特殊情况的经验吗?
答案 0 :(得分:0)
我不确定您是否可以在文档中使用现成的编译正则表达式。
只需添加另一个OR子句,其中模式可能是转义形式。
在您的示例中,我们可以使用转义的OR更改实际的pattenr \ d +。 /消息/ **((d +)| \ d +)。** / + HTML
答案 1 :(得分:0)
所以,我发现ES 不能使用文档中定义的正则表达式,如下所示:
直接支持正则表达式常量。确保快速 性能,这是创建模式的唯一机制。定期 表达式总是常量并且有效地编译为单个表达式 时间。
在这种特殊情况下,无法使用ES中定义的路由进行路由。