【问题标题】:Issues with regex in KibanaKibana 中的正则表达式问题
【发布时间】:2019-06-18 12:48:47
【问题描述】:

我很难在 Kibana/Elasticsearch 6.5.4 版中使用正则表达式模式。我正在搜索的字段具有以下映射:

"field": {
          "type": "text",
          "analyzer": "custom_analyzer"
        },

当直接向 elasticsearch 请求时,此字段中的正则表达式搜索会返回多个命中:

GET /my_index/_search
{
    "query": {
        "regexp":{
            "field": "abc[0-9]{4}"
        }
    }
}

另一方面,在 Kibana 的发现/仪表板页面中,以下所有查询都返回空:

原始查询 - field:/abc[0-9]{4}/

转接查询 - field:/abc\[0\-9\]\{4\}/

绝望的询问 - field:/.*/

检查 kibana 对 elasticsearch 的请求会发现以下查询:

  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "field:/abc[0-9]{4}/",
            "analyze_wildcard": true,
            "default_field": "*"
          }
        }

我希望 kibana 能够理解双正斜杠语法 /my_query/ 并进行“正则表达式查询”而不是“查询字符串”。我已经尝试过使用两种查询语言:“lucene”、“kuery”以及启用/禁用可选的“实验查询功能”。

进一步挖掘我发现this old issue,它说弹性只在now deprecated _all field 中运行正则表达式。如果这仍然成立,我不确定正则表达式在 kibana/elastic 6.X 中是如何工作的。

我错过了什么?任何帮助澄清在 Kibana 中使用正则表达式的条件将不胜感激

本主题中的所有其他堆栈问题要么是老问题,要么与语法问题和/或缺乏对分析器如何处理空格的理解有关,并且没有为我提供任何帮助。

【问题讨论】:

  • 遇到同样的问题。你找到解决办法了吗?

标签: regex elasticsearch kibana


【解决方案1】:

所以我不知道如何让 Lucene 在 Kibana 中使用 Regexp 搜索。但我想出了一种在 Kibana 中执行此操作的方法。

解决方案是使用带有自定义 DSL 的过滤器

这是一个在 Query JSON 中放入内容的示例 -

{
    "regexp": {
        "req.url.keyword": "/question/[0-9]+/answer"
    }
}

我的数据中的示例 URL - /questions/432142/answer

除此之外,您还可以使用 Kibana 搜索(Lucene 语法)编写更多过滤器

它会进行适当的搜索,没有逃避问题或任何类似的事情。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    确保 Kibana 没有在右上角打开查询功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多