如何在 Kibana Discovery 中使用斜杠('/')?

How to use slash ('/') in Kibana Discovery?

我正在为 nginx 访问日志测试 ELK 堆栈。它看起来不错,只是我还没有找到一种方法来在 Kibana Discovery (v5.3.2) 中使用以 "/test/a" 开头的路径搜索记录。如果我删除斜杠,搜索会起作用,但在这种情况下,我得到了我不需要的东西 - "/ololo/ololo?test=1"

我尝试了不同的请求:

path:/\/test\/a/
path:/\/test\/a/
path:"/test/a"
path:"\/test\/a"
path:"\/test\/a"

但没有像我预期的那样工作。

记录:

[
{
    ...
    "path": "/test/a1"
    ...
},
{
    ...
    "path": "/test/a2"
    ...
},
{
    ...
    "path": "/ololo/ololo?test=1"
    ...
},        
]

映射:

"path": {
  "type": "string", 
  "index": "analyzed", 
},

有什么方法可以使用斜杠作为模式的一部分进行搜索吗?

更新:

这些模式也不起作用:

path:/.*\/test\/a.*/
path:/[\/]test[\/]a/

需要把path字段的映射改成不解析,否则斜杠不会被索引

映射应该是这样的:

"path": {
  "type": "string", 
  "index": "not_analyzed",    <--- change this
},

请注意,您需要删除索引并使用适当的映射重新创建它才能使其正常工作。

之后您就可以使用以下查询进行搜索 path:"/test/a"

使用此查询作为示例:

{
  "query": {
    "query_string": {
      "fields": [
        "path.keyword"
      ],
      "query": "\/test\/a\/*",
      "analyzer": "keyword",
      "analyze_wildcard": true
    }
  }
}