web-dev-qa-db-ja.com

kibana3クエリのスラッシュ

次のように、スラッシュで終わるリクエストに一致するクエリを追加しようとしています。

n.n.n.n - - [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クエリタイプを使用しています。

クエリが*に設定されている場合、イベントが表示されます。

request:"css"に設定すると、期待どおりにCSSリクエストが表示されます。

ただし、次のすべての結果は得られません。

  • request:"/"
  • request:"\/"
  • request:"\\/"

Luceneの正規表現を試しましたが、運がありませんでした。

  • request:/\//

他の誰かが同様の問題のように見えるものを受け取っていることに注意しますが、それはKibana 2にあります https://github.com/rashidkpc/Kibana/issues/401

/文字で終わるリクエストをクエリするにはどうすればよいですか?

4
G Mawr

レコードをelasticsearchに出力する前にフィールドを追加することで問題を回避することができました。

私のindexer.confファイルに、次のコードを追加しました:

filter {
  if [request] =~ /\/$/ {
    mutate {
      add_field => {
        'file_type' => 'html'
      }
    }
  }
}

これで、クエリfile_type:"html"を使用して、関心のあるレコードを選択できます。

ここで先頭のワイルドカードの使用に関する警告があるため、これは実際にはより良い方法である可能性があります。

単語の先頭でワイルドカードを許可する(「* ing」など)のは、一致する場合に備えてインデックス内のすべての用語を調べる必要があるため、特に重要です。

ソース: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_wildcards

だから、私はおそらく画像、JavaScript、CSSなどのテストを追加するつもりです。

0
G Mawr

。*を括弧で囲んでも問題ありません。

request.raw:/(.*)\//

/で終わるすべてのURLが返されます。

0

どのマッピングを定義しましたか?

[request]フィールドで定義したマッピングによっては、スラッシュ「/」がelasticsearchインデックスに保存されていない可能性があります。

[request]フィールドの用語パネルをkibanaに追加すると、完全な要求値が表示されますか、またはそれらの値がキーワード/用語に分割されているのがわかりますか?

0
yahiko