elasticsearchは、Solrと同じくApache Luceneをエンジンにしたオープンソースの検索システムですが、Kibanaなどのツールとの連携など、応用されている範囲が広く、ただの全文検索システム以上なツールです。
公式サイトの説明: http://www.elasticsearch.org/overview/elasticsearch/
全文検索システムを自分のシステムに組み込みたい場合は、elasticsearchの他に、SolrやAWSのCloudSearchが比較対象になるかと思いますが、対応しているツールの多さや、どのブログを見ても今から使うなら、前出のSolrよりもelasticsearchを選択するのが良さそうな印象。
参照: 全文検索システムの比較 – Elasticsearch vs Solr vs Amazon CloudSearch
何はともあれ、使ってみないと解らないのでインストールしてみました。
Javaのインストール
elasticsearchの実行には、Java 1.6以上が必要です。
$ sudo apt-get install openjdk-6-jdk
elasticsearchのインストール(参照: setup)
aptリポジトリが用意されているのでapt-getで入れてみます。
参照: repositories
$ wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -
/etc/apt/sources.listに、バージョン1.1のリポジトリを追加します
deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main
apt-getでインストールして起動します。
$ sudo apt-get update
$ sudo apt-get install elastic search
起動と動作確認
$ sudo service elasticsearch start
* Starting Elasticsearch Server [ OK ]
$ curl -X GET http://localhost:9200/
{
"status" : 200,
"name" : "Fred Myers",
"version" : {
"number" : "1.1.0",
"build_hash" : "2181e113dea80b4a9e31e58e9686658a2d46e363",
"build_timestamp" : "2014-03-25T15:59:51Z",
"build_snapshot" : false,
"lucene_version" : "4.7"
},
"tagline" : "You Know, for Search"
}
データの追加と検索
curlでコマンドを直接データの追加や検索を実行する手順については、Elasticsearch.org Elasticsearch | Elasticsearchの一番下にあるムービーで説明されています。
ElasticSearch – Introduction on Vimeo
このムービーを見れば、後はReference [1.x]を参照しながら動作を確認できるようになります。
日本語検索、形態素解析プラグインの導入
デフォルトのセットアップだと、日本語の検索が正しく動作しません。
例えば、47都道府県のデータに対して「島根」で検索すると「島根」「福島」「広島」「徳島」「鹿児島」がヒットしてしまいます。参照: elasticsearchとkuromojiプラグインで日本語の全文検索 – yuhei.kagaya
そこで、日本語形態素エンジンを導入します。検索するとkuromojiがメジャーなようなのでkuromojiを入れてみます。(Github | elasticsearch/elasticsearch-analysis-kuromoji)
kuromojiは、プラグインとしてインストールします。
(apt-getでインストールした場合は/usr/shareの下にpluginコマンドがあります。)
$ sudo /usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.0.0
-> Installing elasticsearch/elasticsearch-analysis-kuromoji/2.0.0...
Trying http://download.elasticsearch.org/elasticsearch/elasticsearch-analysis-kuromoji/elasticsearch-analysis-kuromoji-2.0.0.zip...
Downloading ............................................................................................................................................................................................................................................................................................................................................................................DONE
Installed elasticsearch/elasticsearch-analysis-kuromoji/2.0.0 into /usr/share/elasticsearch/plugins/analysis-kuromoji
~~~~
インストールしたらelasticsearchを再起動する必要があります。
~~~bash
$ sudo service elasticsearch restart
プラグインが有効になったかどうかは以下のコマンドで確認できます。
$ curl -XGET 'http://localhost:9200/_nodes?plugin=true&pretty'
...
},
"plugins" : [ {
"name" : "analysis-kuromoji",
"version" : "NA",
"description" : "Kuromoji analysis support",
"jvm" : true,
"site" : false
} ]
}
}
}
デフォルトのアナライザーとして登録するために、/etc/elasticsearch/elasticsearch.ymlに以下の設定を追加します。
index.analysis.analyzer.default.type: custom
index.analysis.analyzer.default.tokenizer: kuromoji_tokenizer
再起動で適用されます。
$ sudo service elasticsearch restart
以上が、全文検索にelasticsearchを利用するための最低限のセットアップ手順になります。