なんかかきたい

プログラミングなどの個人的なメモやサークル「ゆきいろパラソル」の情報を載せてます

ElasticSearchの運用とか (1)

最近のお仕事的なことですが、ElasticSearchの構築・運用を任されるようになりました。

まかされるというか、実際にはいい感じに全文検索ができる仕組みを作って欲しいといういつもの依頼だったんだけども、全く運用の経験の無いプロダクトだったので色々わからないことだらけ。

最近はKibanaと組み合わせて言い感じのグラフを作るのがWeb屋さんの間で流行っているイメージですが、Kibanaを除いたElasticSearchの細かなところに踏み込んだ情報はあまりない感じで(多分感心があまりないのかも)、結局マニュアルを色々読んでわからないところを補完していった感じです。

同じようにElasticSearchを使って検索機能を作っていきたいような人の参考になればいいなー程度にまとめて行こうと思います。そのうち自分でも見直すことになるだろうし。

一応手元にmarkdownでまとめたものもあるんだけども、せっかくだしブログに書いておこうかなと。 自分が見るためだけにまとめたものなので、内容はかなりいい加減なメモ程度の情報が多くなりがちですが、その辺りは勘弁してください。

タイトルには運用って書いてあるけど、しばらくは構築周りの話になりそう。

elasticsearch.

Apache Luceneを使った全文検索エンジンJSONを使ってやり取りできるRESTfulなAPIを装備している。 基本的な設定だけである程度動かすことができ、類似機能を提供するSolrと比較しても簡単に導入できる。

Solr vs ElasticSearch (翻訳)

対象バージョン

1.1.0 を想定しているけど、この情報をまとめた時は0.90が最新だったため一部古い情報が残っているかも。とはいえ、動かなかった箇所はアップデートしているので、概ね問題ないと思う。

最初に作ったElasticsearchはDebianで動かしたのでDebian向けの情報が多めだけど、OSは特に関係なくそれなりに役に立つと思う。Macで動かしたいときはhomebrewで簡単に入れられる。

ドキュメント

elasticsearch Guide (公式)

公式の簡単な使い方のガイド、便利。だけど、ところどころで情報が少なめな印象。そのうち充実していくと嬉しい。 細かい設定の方法やチューニングなどは、設定ファイル内のコメントのほうが充実している印象です。

elasticsearch Ruby/Client (公式)

公式ライブラリ。よくできているので、これを使うのが良さそう。

後述しているフェイルオーバー機能はelasticsearch-transportの部分に実装があるので、そちらを読んだほうがよい。

Interview with the Github Elasticsearch Team

githubのElasticSearch運用についてのインタビュー。困ったポイントなどがまとまっていて一読する価値がある。

その他の野良情報

Elasticsearchとkuromojiでちゃんとした日本語全文検索をやるメモ

node.js で elasticsearchを使ってみる

Kibana + fluentd + elasticsearchの流行でその手の情報ばかりが上位に上がってくるけれどもelasticsearchをちゃんと説明しているサイトがあまり多くないので注意が必要。

インストール

公式に置かれているjarをそのまま実行するだけで起動できる。

DebianUbuntuの場合、debパッケージでインストールすることもできる。 Redhat系にはrpmもあるみたい。

2014/4/17 現在、安定版は1.1系。

debパッケージでインストールした場合、後で説明するクラスタリングの機能が厄介事を起こす事があるので、apt-getでインストールする際には注意したほうがよい。

アップデート

ElasticSearchのバージョンアップに伴い、一度作ったElasticSearchのクラスタを丸ごとバージョンアップしたくなることがあると思う。 0.90から1.1にマイグレーションした時のメモを残しておくので、バージョンアップの参考になればと思います。

ElasticSearchを停止する

悲しいことだけど、ElasticSearchを無停止でアップデートする方法は知らない。 ElasticSearchのクラスタ全体を停止して一気にバージョンアップするのが良さそうである。(もしくは同じ規模のクラスタをもう一つ用意する)

debパッケージの向き先を変える

ElasticSearch 1.1のdebパッケージはこんな感じ。

deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main

aptのsource.listを書き換えapt-get updateapt-get upgrade elasticsearchを実行する。

古いバージョンのElasticSeachがインストールされている場合、設定ファイルを上書きするかどうか訪ねられるが、バージョンアップによってパラメータ名が変わっていることがあるので、設定ファイルは作り直すほうがよさげ。

プラグインのバージョンアップ

いくつかのプラグインはElasticSearchのバージョンによっては動作しないことがあるので、バージョンアップが必要なことが多いと思う。 ElasticSearchプラグインのバージョンアップを行うには、一旦古いプラグイン-removeで削除した後にもう一度-installでインストールする必要がある。 例えばelasticsearch-analysis-kuromojiを再インストールするには次のようにする。

sudo /usr/share/elasticsearch/bin/plugin -remove elasticsearch/elasticsearch-analysis-kuromoji/2.1.0
sudo /usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.1.0

ElasticSearchを起動する

/etc/init.d/elasticsearch restartとでもしてElasticSearchを再起動する。問題が無ければこのまま運用できると思う。


今回はここまで。次回はelasticsearch.ymlとか必要な設定周りを説明していこうと思う。