elasticsearch是否支持对文本类型字符串进行正则表达式搜索?
我创建了如下文档。
{
"T": "a$b$c$d"
}
,我尝试使用以下查询搜索此文档。
{
"query": {
"query_string": {
"query": "T:/a.*/"
}
}
}
对我来说似乎有用,但是当我尝试使用'$'符号进行查询时。找不到文档。
{
"query": {
"query_string": {
"query": "T:/a$.*/"
}
}
}
我应该如何查找文档?此关键数据应为文本类型(而非关键字),因为它可以长于关键字最大长度。
答案 0 :(得分:0)
您应该在这里注意一些事情:
$
符号在正则表达式中具有特殊含义(它标记字符串的结尾),因此您必须对其进行转义:a\$.*
$
用作(非转义的)RegExp符号:无论如何,您的RegExp 必须匹配整个令牌。因此,(以您的示例为准)要匹配a
后跟c
的字段,则需要.*?a[^c]*c.*
,或者如果您 {{ 1}}个在其中,请对其进行转义:$