読者です 読者をやめる 読者になる 読者になる

$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

自分流Elasticsearch入門

【2016/09/10追記】
勉強しなおして、Elasticsearchの知識についてさらにまとめた記事を書いたので、そちらを参照してもらうと良さそうです。

blog.shibayu36.org



最近Elasticsearchの勉強をした。ただ、入門のためどのような資料が適しているかを知るのが大変だった。そこでどのように勉強したかについてメモをしておく。少しまとめエントリー的なノリになりそう。

  • Elasticsearchの概念を知る
  • 全文検索技術の基本を知る
  • Elasticsearchのドキュメントのたどり方を知る

の順に学習を進めていった。

Elasticsearchの概念を知る

Elasticsearchの学習を始めようとした時に、まずは基本からということで以下の本を読んでいた。

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

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

しかし、この本だと内容が0.*系の話であり、現在のElasticsearchのバージョンは1.6であるため内容が古く、0.*系から1系でだいぶAPIとかも変わっているため困る。また、Elasticsearchの概念を学ぼうとした時に、あまり分かりやすくはまとまってなかったかなと感じた。


そこでまず最初に読んだ記事は
code46.hatenablog.com

この記事はElasticsearchを使うなら必ず読んでおくと良いと思う。Elasticsearchを使う際には学ばなければならない概念が多い。この記事ではその概念を図などを使って分かりやすく説明してくれる。これによりnode, index, typeの構造や、mappings, analyzer, tokenizer, filterの関係、query, filterの関係、簡単なAPIの使い方、検索結果のソートの方法など、基本的な概念や使い方を学ぶことができる。これまで調べた記事の中で一番分かりやすかった。

全文検索技術の基本を知る

続いて、全文検索技術の基本を知っておかないと、Elasticsearchをうまく使えないと考えた。

まず参考にしたのは以下の資料。これの最初の方の部分からN-gram形態素解析について学ぶことができる。
speakerdeck.com

またこちらの資料からも正規化やストップワードなどの仕組みを学ぶことができる。
www.atmarkit.co.jp


この二つから得られるものは検索技術に関する基本中の基本であるが、この部分を軽く抑えておくか否かで使っている時の理解度が違ってくるように思った。ただしもちろん検索技術は奥が深いので、Elasticsearchを利用していてこれだけでは分からないということがあった場合は、さらに知識を深める必要があると思う。

Elasticsearchのドキュメントのたどり方を知る

今後利用していく上で必ず必要になるのは、何かわからなくなった時にどのようにドキュメントを辿るかを知っていること、だと考えた。そこでドキュメントのたどり方について学んだ。


ここで最初の資料に戻る。
code46.hatenablog.com

一番最初に読んでいた頃は、概念について全く知らない状況だったため、まずはそれを知るという頭でこの資料を読んでいた。そのため概念は理解できたが、mappingsやqueryの中身まで追いかけなかった。そこでこの資料の中のmappingsで定義している意味やqueryで指定しているものの意味すべてを、公式ドキュメントから探すということをやってみた。

公式のドキュメントはElasticsearch Reference [2.4] | Elasticを参考にする。構造化されているのでそこからたどってみるか、右上の検索から探すと良い。ただ、個人的には構造から辿って行くとそれ以外のAPIとの関係を掴みながら学習できるとは思った。


また、最初の資料では食べログのデータをElasticsearchに入れるという部分のコードはなかったので、これも自分で書いてみると理解が深まる。