PythonからElasticsearchを触ってみる

AWS, Python

この記事は最終更新日から1年以上が経過しています。

あるシステムでアクセスログの保存先にElasticsearchを使用しているということで、
何かに活用できないかデータを少し見せてもらいました。

AWSの機能でElasticsearch + Kibanaを立ち上げてFluentdでサーバからログを転送しているそうです。

ApacheのアクセスログをKibanaから確認します。
CSSやAjaxっぽいログも混じるので使えそうなデータのみに絞ります。

screen1066-01jpg.jpg

ログはJSON形式で保存されKibanaの画面からElasticsearchへクエリを発行することができます。
Kibanaではログのフィルタを Luceneクエリ という書式で指定します。

Pythonから

Pythonから呼ぶには elasticsearch モジュールを利用します。
https://elasticsearch-py.readthedocs.io/en/master/

先ほどの画面のグラフの下を開くとKibanaがElasticsearchに発行しているクエリを見ることができます。
コピペしてそのまま動作するのでLuceneクエリをElasticsearchのクエリに変換する手間が省けます。

screen1066-2.jpg

ソース

実行結果

まとめ

少し試してみたところ画面でアクセスしてから30秒くらい遅れて検索で返ってきました。
データ量があまり多くないからか結果は一瞬で返ってくるのでそのあたりは本番でも確認してみたいと思います。

AWS, Python