ElasticSearch Serverを読んだ

高速スケーラブル検索エンジン ElasticSearch Server (アスキー書籍)

高速スケーラブル検索エンジン ElasticSearch Server という本を読んだ。読んだ理由は、タイミングが良かったから。効率的に学ぶのに丁度いい時機というものがあると思う。何かを学ぶのには動機と情報源が必要。動機が無ければ勉学は長続きしないし、無理矢理覚えようとしても楽しくない。Elasticsearchに対しては何か面白そうという気持ちを最近少しだけ感じていて、こういう気持ちが湧くのは貴重なことだから大事にしないとなと思って本を買って読むことにした。あるプロゲーマー曰く、良いゲーマーの素質はゲームを楽しめることにあるらしい。自分が楽しいと思えるものを取捨選択していくことは、何かと欝っぽいこの社会の中で生きていくのには重要な能力だと思う。経済的な潮流に乗ることも大事。その知識が経済的に利益を生み出しやすい時期というものがある。例えば仕事で使えるとか。品質の良い、即ち学習効率の良い情報源にありつけることも大事。まとまった情報源もなく導入事例も運用知識もまだまだ少ないというものを学ぶリスクは大きい。そういう意味で今回は、丁度仕事でElasticsearchを使い始めたし、便利さを実感し始めたところだし、日本語の書籍も発売されたばかりでタイミングが良かった。

自分のElasticsearchの用途は、今のところKibanaで最近のリクエストログの様子を見るというものだけ。HTTPリクエスト単位のログをFluentd経由でElasticsearchに保存してKibana経由で検索して閲覧している (こういう使い方は最近ではありふれているらしい)。Elasticsearchに問い合わせるクエリはKibanaが内部で生成してくれるので、KibanaのUIの使い方さえ知っておけば本来Elasticsearchがどうなっているかを意識する必要は無い。ただ、実際には検索の精度や速度を改善するために、Elasticsearchの内部の動作を知る必要が出てくる。例えばHTTPリクエスト単位の記録という用途では、URIのパスはスラッシュごとに分割して検索インデックスをつくる必要はないということをElasticsearchに伝えてあげたり、あるカラムは完全一致するかどうかを基準に検索したいので保存時にそういうインデックスの作り方をしてほしい旨を伝えてあげたりする必要がある。

こういう知識は最近だと検索すればQiitaや個人のブログがヒットするので断片的に拾い読むことができるけど、問題を抱えるたびに都度調べていては段々学習効率が悪くなってくる。また、問題意識を持つことができなければ改善することができないので、気付いていないが実はこういうこともできるということに思い至るのは難しい。こういう危険性を回避するために本を読んでまとまった知識を得るのは有効だと思う。別にElasticsearchに限った話じゃないけど。今のところElasticsearch関係で日本語のまとまった情報源と言えばこの本を読むのが1番良いと思うのでおすすめ。公式ドキュメントを読むより本を読むほうが良いのは間違いない。読み終わったところで明日から業務で使える知識が手に入るという感じではないので、書籍を読んだあとは導入事例や自分のよく知る言語におけるライブラリ、それからElasticsearchと連携できる各種ミドルウェア (例えばFluentdとかDynamoDBとかその辺) などを調べて、実際に役立つ具体的な手法に落としこんでいくのがいいと思う。文章量の割に特に内容に関する言及が無く一部の人にとっては肩透かしだったと思うので、最後に申し訳程度に目次を引用しておきます。

  • 第1章 ElasticSearchクラスタ入門
  • 第2章 データの検索
  • 第3章 構造や検索を拡張する
  • 第4章 よりよい検索
  • 第5章 インデキシング、アナライズ、検索の統合
  • 第6章 検索を越えて
  • 第7章 クラスタ管理
  • 第8章 問題への対処
  • 付録A ログ可視化・分析ツールKibana
  • 付録B ElasticSearchの日本語処理について