我试图添加一个匹配以斜线结尾的请求的查询,如下所示:
nnnn - - [16/Oct/2013:16:40:41 +0100] "GET / HTTP/1.1" 200 25058 "-" "Mozilla/5.0 (iPad; CPU OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.53"
我正在使用Lucene查询types。
如果我的查询设置为* ,我看到事件。
如果我将其设置为request:"css" ,我会看到CSS请求,如预期的那样。
但是,以下所有情况都不会产生任何结果:
request:"/" request:"\/" request:"\\/" 我尝试了一个Lucene的正则expression式,没有运气:
request:/\// 我注意到别人正在看似乎是类似的问题,虽然这是关于Kibana 2的: https : //github.com/rashidkpc/Kibana/issues/401
如何查询以/字符结尾的请求?
你定义了什么映射?
根据您在[请求]字段中定义的映射,斜线“/”可能不存储在elasticsearch索引中。
如果为[请求]字段添加一个术语面板到kibana,您是否看到完整的请求值,或者您是否将这些值分解为关键字/术语?
我已经设法解决我的问题,通过添加一个字段之前logging输出到elasticsearch。
在我的indexer.conf文件中,我添加了这个代码:
filter { if [request] =~ /\/$/ { mutate { add_field => { 'file_type' => 'html' } } } }
我现在可以用查询file_type:"html"来选出我感兴趣的logging。
这实际上可能是一个更好的方法,因为在这里有使用领先的通配符的警告:
在一个单词的开头(如“* ing”)允许使用通配符尤其重要,因为索引中的所有术语都需要检查,以防万一匹配。
来源: http : //www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_wildcards
所以,我可能会添加图片,JavaScript,CSS等testing。
使用括号。*对我来说工作正常。
request.raw:/(.*)\//
它返回所有以/结尾的url。