gpt4 book ai didi

python - 使用 Regexp 过滤器的 Elasticsearch Bool 查询

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:06 25 4
gpt4 key购买 nike

我一直在尝试找出在 Elasticsearch 5.4 查询中使用实际正则表达式模式的最佳方式。在搜索标准分析器并对每个字符串字段进行标记后,我开始使用放置在我的映射中的未分析字段(标准 .raw 属性)。我尝试了同一查询的两种变体,均未成功。

查询字符串过滤器:

GET /test-*/_search
{
"query": {
"bool": {
"must": [
{
"query_string":{
"query": "URL.raw:/^(http|https)\\:\/\/.+(wp-content|wp-admin)/"
}
}
]
}
},
"sort": {
"@timestamp": {
"order": "desc"
}
}
}

正则表达式过滤器:

GET /test-*/_search
{
"query": {
"bool": {
"must": [
{
"regexp": {
"URL.raw":{
"value": "/^(http|https)\\:\/\/.+(wp-content|wp-admin)/"
}
}
}
]
}
},
"sort": {
"@timestamp": {
"order": "desc"
}
}
}

两者似乎都没有产生任何结果或解析异常

{
"error": {
"root_cause": [
{
"type": "parse_exception",
"reason": "parse_exception: Encountered \" \"^\" \"^ \"\" at line 1, column 8.\nWas expecting one of:\n <BAREOPER> ...\n \"(\" ...\n \"*\" ...\n <QUOTED> ...\n <TERM> ...\n <PREFIXTERM> ...\n <WILDTERM> ...\n <REGEXPTERM> ...\n \"[\" ...\n \"{\" ...\n <NUMBER> ...\n "
},

lucene 是否需要特殊的转义字符或列入黑名单的字符?任何帮助或指示将不胜感激。谢谢!

最佳答案

Lucene 正则表达式默认锚定,^/$ 在那里并不特殊。

您不需要 / 正则表达式分隔符,因此您不需要转义 /

使用以下模式:

"value": "https?://.*wp-(content|admin).*"

请注意,我对组做了一些修改,使模式更加线性和高效。

详细信息:

  • https?:// - 字符串以 https://http://
  • 开头
  • .* - 然后有任何 0+ 个字符
  • wp- - wp- 子串
  • (content|admin) - contentadmin 子字符串
  • .* - 然后有任何 0+ 个字符。

关于python - 使用 Regexp 过滤器的 Elasticsearch Bool 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44376753/

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