文系が趣味のプログラミング頑張ってみるブログ

楽しいです。基本はandroidやってます。api作るのにphp使ってたんですがrailsに乗り換えようとしてます。

ElasticSearch初心者が勉強したものまとめ

ElasticSearchがどうしても使いたくて初心者が勉強してみた。 で、ElasticSearch 入門とか入れてとりあえず日本語で検索してみたら

dev.classmethod.jp

が最初にでる。おおいいやん!これで門叩くぜ!とか思って第1回読んだら

Elasticsearch の Index は、物理的な要素である複数の Shards から構成されていて、その Shards を複数のノードに分散することで1つの Index に対するデータ量や書き込み速度を分散することができる仕組みになっています。また1つの Index に対して、書き込み可能な Shards の数は Index 作成後は変更できないため、(インデックス速度をスケールできるサーバー台数の上限が決まってしまう)設計時にはこれらのことを考慮して、将来的なデータ増、インデックス速度要件を確認して、例えば商品カテゴリごとに Types で分けるのか、Indices レベルで分けるのか検討する必要があります。(商品カテゴリごとに Indeces レベルで分ける設計にすることで、Shards の数も、商品カテゴリ x Shards となるため、将来的なデータ増や書き込み速度の改善に対応しやすくなる)

やっべなんもわかんねえ何言ってるんだろうこの人って感じだった。 この上にRDBとElasticSearchの用語を比較した簡単な説明があるんだけどShardsとかノードとかは書いてない。これサーバーサイドやってる人なら一発で分かるのかなぁ。てかIndicesってなんだよindexじゃねえのかよって調べたらindexの複数形らしい。この時点でこれがわからないのは俺がアホなだけだと確信。

ただアホだからやめようだといつまでも話が進まないのでいろいろ調べた。

blog.shibayu36.org

このサイトから

[http://blog.shibayu36.org/entry/2016/09/05/110000:embed:cite]

ここにたどり着いた。おお、わかりやすい。さっきのと比べると全く知らない俺でも少し意味がわかる。 とりあえずこれで概念的なものがようやくちょっと理解できた。ただ、唯一残念なのがとりあえずデータを入れるってとこは自分でやってってところ。 まあこれに関しては確かに誰でもできるとおもうけどね。でもとりあえずなんか入れて実験したいじゃん。その前に設計しなきゃじゃん。めんどくさいからやめるじゃん。

とりあえず初心者の壁はmapping、つまりデータ定義だということを理解した。結局mappingのためにインデックスだのタイプだの覚えなきゃいけないわけだし。 でもなんというか、ここを綺麗に説明してるサイトがなかなかない。まあDB構築を説明するみたいな感じだろうしそりゃ複雑になるのは分かる。でもそんな大それた使い方がしたいわけでもないんすよ... と思ったら、あったわ。

blog.shibayu36.org

この人神すぎるでしょ。mappingのやり方もそうだけど、何を考えてこのmappingにするかが分かるのはマジ神。しかもどうやって送ればいいかもまあわかる。 マジ助かった。ドキュメント全部読むの結構手間なんだもの...

まとめってかただの記事紹介になってしまった。ホントは学んだことまとめようと思ったんだよ。でもいらなくなっちゃったんだよ。このサイトに全部書いてあるもの。