Kibana正则表达式搜索

Kri*_*nya 8 regex kibana elastic-stack

我是ELK的新手.我想根据字段中单词出现的顺序搜索文档.例如,

在doc1中,my_field:"MY FOO WORD BAR EXAMPLE"
在doc2中,my_field:"MY BAR WORD FOO EXAMPLE"

我想在Kibana中查询文档,其中"FOO"后跟"BAR"而不是相反.所以,我希望doc1在这种情况下返回而不是doc2.我尝试在Kibana搜索中使用以下查询.但是,它不起作用.此查询甚至不会产生任何搜索结果.

my_field.raw:/.*FOO.*BAR.*/
Run Code Online (Sandbox Code Playgroud)

我也尝试过分析字段(只是my_field),虽然我知道这应该不起作用.当然,这也没有产生任何结果.

请帮我这个正则表达式搜索.为什么我没有得到该查询的任何匹配结果?

Jeb*_*avi 5

GET /_search
{
    "query": {
        "regexp": {
            "user": {
                "value": "k.*y",
                "flags" : "ALL",
                "max_determinized_states": 10000,
                "rewrite": "constant_score"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

更多详细信息请参见此处

  • 以及如何在 GUI Web 控制台中执行此操作? (10认同)
  • @RodneyS.Foley 左上角您应该看到“添加文件管理器 +”,在弹出窗口中单击“编辑查询 DSL” (2认同)

Rya*_*anR 3

我不确定为什么该正则表达式查询不起作用,但我相信 Kibana 正在使用此处记录的 Elasticsearch 查询字符串查询,因此例如您可以通过将搜索放在双引号中来执行短语查询(在链接中记录)并它会查找单词“foo”,后跟“bar”。这也会表现得更好,因为您可以在分析字段 (my_field) 上执行此操作,其中它已标记每个单词以执行快速查找。因此,您在 Kibana 中的搜索将是:

my_field: "FOO 酒吧"

更新:

看起来这是 Kibana 的一个恼人的怪癖(可能是出于向后兼容性的原因)。无论如何,这与您不匹配,因为您正在搜索未分析的字段,并且显然 Kibana 默认情况下将搜索小写,因此它不会匹配未分析的大写“FOO”。您可以在此处提到的 Kibana 高级设置中进行配置,具体方法是将配置选项“lowercase_expanded_terms”设置为 false。