gpt4 book ai didi

Elasticsearch - 文本类型正则表达式

转载 作者:行者123 更新时间:2023-12-03 01:37:00 24 4
gpt4 key购买 nike

elasticsearch 是否支持文本类型字符串的正则表达式搜索?

我创建了一个如下所示的文档。

{
"T": "a$b$c$d"
}

我尝试使用以下查询搜索此文档。
{
"query": {
"query_string": {
"query": "T:/a.*/"
}
}
}

这似乎对我有用,但是当我尝试使用“$”符号进行查询时。它无法找到该文档。
{
"query": {
"query_string": {
"query": "T:/a$.*/"
}
}
}

我该怎么做才能找到文件?这个关键数据应该是文本类型(不是关键字),因为它可以长于关键字最大长度。

最佳答案

你应该知道一些事情,在这里:

  • 如果您的字段被分析(并在此过程中标记化),您将只能在包含与您的 RegExp 匹配的标记(而不是整个“文本”)的字段中找到匹配项。如果要匹配字段的全部内容,则必须使用关键字字段或至少一个 Keyword Analyzer这不会标记您的文本。
  • $符号在正则表达式中具有特殊含义(它标记字符串的结尾),因此您必须对其进行转义:a\$.*
  • 您的 RegExp 必须匹配整个 token 才能获得成功。这就是为什么没有必要使用 $作为(非转义的)正则表达式符号:您的正则表达式 必须无论如何,从头到尾匹配整个 token 。所以(坚持你的例子)匹配 a 的字段紧随其后的是 c , 你需要 .*?a[^c]*c.* ,或者如果您需要 $在那里,逃脱他们:.*?a\$[^c]*c\$.*
  • 关于Elasticsearch - 文本类型正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51645854/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com