【问题标题】:How do you perform a RegExp query on a URL in ElasticSearch?如何对 ElasticSearch 中的 URL 执行 RegExp 查询?
【发布时间】:2018-07-16 22:47:08
【问题描述】:

我正在尝试在 ElasticSearch 中执行(我认为是)一个简单的 RegExp 查询,但在我的一生中我无法让它工作。这是所说的查询,

{
  "query": {
    "regexp":{
      "request_url": "/somepage/[0-9]+/[a-z]+"
    }
  }
}

当我包含一个正斜杠/ 字符时,这个查询似乎中断了。如果没有正斜杠,我会得到每个单独部分的结果。

我只尝试了一个斜线/,我尝试用\/\\/ 转义它。我将查询减少到/somepage\\/somepage,什么都没有。

我一直在谷歌上大量搜索,但似乎找不到一致的答案。我认为也许 ElasticSearch 只是不支持 RegExp 查询中的/...?我通过查看文档知道它不是保留字符。

会不会和这个字段的数据类型有关?

"request_url": {
  "type": "text",
  "norms": false,
  "fields": {
    "keyword": {
      "type": "keyword",
      "ignore_above": 256
    }
  }
},

查看文档,text 明确表示它分析和标记数据。所以我希望它可能会删除/ 字符?我也尝试了针对 keyword 字段的查询,但没有成功。

那么,有什么建议吗? ElasticSearch 真的可以做我需要的吗?谢谢。

【问题讨论】:

    标签: regex elasticsearch kibana


    【解决方案1】:

    我的建议:

    1. \\\\/ 如果将其视为字符串,它将在 JSON 中变为 \\/,同时将变为 \/
    2. \x2f 和派生词 => \\x2f\\\\x2f

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多