如何在 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
}
}
}
我正在为 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
}
}
}