ELKスタックでnginxアクセスログをテストしています。 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
}
}
}