【发布时间】:2019-07-02 23:39:10
【问题描述】:
我正在使用 Kibana 控制台执行此类查询(它们是分开的:一个用于主题标签,一个用于提及)。文档集合是带有 textContent 字段的博客条目,其中可能包含 @theUserName @AnotherOne 之类的用户提及或 #helloWorld 和 #hello2 之类的主题标签。查询如下所示:
GET /xblog/_search
{
"source": [
"id",
"textContent"
],
"query": {
"regexp": {
"textContent": {
"value": "@([^-A-Za-z0-9])",
"flags": "ALL"
}
}
}
}
但问题是它还会返回不包含@userMention 的文档。我认为正则表达式中的 @ 被视为特殊符号,但阅读文档我找不到如何转义它。
在文档 1 中,作者说你可以用双引号转义任何符号,所以我测试了:
""@"" 但我一无所获。
我还会测试我习惯的表达方式,例如: /\s([@#][\w_-]+)/g
但这会在 Kibana 中产生多个错误。我尝试根据文档更换一些零件,但仍然无法正常工作。
你能指出我正确的方向吗? 提前致谢,
【问题讨论】:
-
你试过
"\\@[^-A-Za-z0-9]"吗?或者,使用"flags": "NONE" -
@WiktorStribiżew 写
[^-A-Za-z0-9]的另一种方式是[^[:alnum:]]。这可能是我会做的。 -
@thb ES 正则表达式不支持 POSIX 字符类
标签: regex elasticsearch kibana