elasticsearch 1.1をubuntu12.04にセットアップ

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以上が必要です。
[bash]
$ sudo apt-get install openjdk-6-jdk
[/bash]

elasticsearchのインストール(参照: setup)

aptリポジトリが用意されているのでapt-getで入れてみます。
参照: repositories
[bash gutter=”false”]
$ wget -O – http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add –
[/bash]
/etc/apt/sources.listに、バージョン1.1のリポジトリを追加します
[text]
deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main
[/text]
apt-getでインストールして起動します。
[bash gutter=”false”]
$ sudo apt-get update
$ sudo apt-get install elastic search
[/bash]

起動と動作確認

[bash]
$ 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"
}

[/bash]

データの追加と検索

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コマンドがあります。)
[bash gutter=”false”]
$ 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
[/bash]
インストールしたらelasticsearchを再起動する必要があります。
[bash gutter=”false”]
$ sudo service elasticsearch restart
[/bash]
プラグインが有効になったかどうかは以下のコマンドで確認できます。
[bash gutter=”false”]
$ curl -XGET ‘http://localhost:9200/_nodes?plugin=true&pretty’

},
"plugins" : [ {
"name" : "analysis-kuromoji",
"version" : "NA",
"description" : "Kuromoji analysis support",
"jvm" : true,
"site" : false
} ]
}
}
}
[/bash]
デフォルトのアナライザーとして登録するために、/etc/elasticsearch/elasticsearch.ymlに以下の設定を追加します。
[text]
index.analysis.analyzer.default.type: custom
index.analysis.analyzer.default.tokenizer: kuromoji_tokenizer
[/text]
再起動で適用されます。
[bash gutter=”false”]
$ sudo service elasticsearch restart
[/bash]

以上が、全文検索にelasticsearchを利用するための最低限のセットアップ手順になります。