我是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.*/
我也尝试过分析字段(只是my_field),虽然我知道这应该不起作用.当然,这也没有产生任何结果.
解决方法
我不确定为什么正则表达式查询不起作用,但我相信Kibana使用Elasticsearch的查询字符串查询记录
here所以例如你可以通过将搜索放在双引号中进行短语查询(在链接中记录)它会寻找单词“foo”后跟“bar”.这样做也会更好,因为你会在你的分析字段(my_field)上执行此操作,它会对每个单词进行标记,以执行快速查找.所以你在Kibana搜索会是:
my_field:“FOO BAR”
更新:
看起来这是一个恼人的Kibana怪癖(可能是出于向后兼容的原因).无论如何,这不适合您,因为您正在搜索未分析的字段,并且显然默认情况下Kibana会降低搜索范围,因此它将与未分析的大写字母“FOO”不匹配.您可以在here提到的Kibana高级设置中进行配置,特别是通过将配置选项“lowercase_expanded_terms”设置为false.