tohokuaikiのチラシの裏

技術的ネタとか。

WordPressのelasticsearchプラグインを使ってみたいのでメモ

もうMySQLのLIKE検索だけはいやなんじゃーー!と思い続けて幾星霜。
SennaとかHyper Estraierとかいいなーとか横目で見つつ、そんなのを使う機会もなかったけど。elasticsearchっていうのが最近の全部検索ではイケてるしヤバいということで導入してみる。

実はWordPressに入れたかったのだけど、elasticsearchのWordPressプラグインがこれまたイケてるしヤバいコードだったので初めて使ってみようという気になったのである。実はWordPressを使い続けて幾星霜、初めてプラグインのコード見て「こりゃすげぇ」「使ってみてえ」って思ったのである。

OSはCentOS release 6.4 (Final)

elasticsearchのソース入手

この手の新し目のプログラムはyumリポジトリに入ってないので開発元のダウンロードを使う。

ダウンロードページにRPMがあるので迷わずチョイス。その前にJavaが入ってない場合はインストール
http://www.elasticsearch.org/download/
http://www.oracle.com/technetwork/java/javase/downloads/index.html

#rpm -ivh jdk-7u25-linux-x64.rpm
[root@server rpm]# rpm -ivh jdk-7u25-linux-x64.rpm
Preparing...                ########################################### [100%]
   1:jdk                    ########################################### [100%]
Unpacking JAR files...
        rt.jar...
        jsse.jar...
        charsets.jar...
        tools.jar...
        localedata.jar...

#rpm -ivh elasticsearch-0.90.2.noarch.rpm
[root@server rpm]# rpm -ivh elasticsearch-0.90.2.noarch.rpm
Preparing...                ########################################### [100%]
   1:elasticsearch          ########################################### [100%]
Starting elasticsearch: [  OK  ]

RPMでインストールすると、elasticsearchというユーザーが作られてそのユーザー権限で実行される。

[root@server rpm]# tail -1 /etc/passwd
elasticsearch:x:498:499:elasticsearch user:/usr/share/elasticsearch:/sbin/nologin
[root@server rpm]# ps auwx|grep elastic
498      10661  3.2  4.2 3356984 167156 ?      Sl   13:15   0:05 java -Xms256m -Xmx1g -Xss256k -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Delasticsearch -Des.pidfile=/var/run/elasticsearch/elasticsearch.pid -Des.path.home=/usr/share/elasticsearch -cp :/usr/share/elasticsearch/lib/elasticsearch-0.90.2.jar:/usr/share/elasticsearch/lib/*:/usr/share/elasticsearch/lib/sigar/* -Des.default.path.home=/usr/share/elasticsearch -Des.default.path.logs=/var/log/elasticsearch -Des.default.path.data=/var/lib/elasticsearch -Des.default.path.work=/tmp/elasticsearch -Des.default.path.conf=/etc/elasticsearch org.elasticsearch.bootstrap.ElasticSearch

起動に関するオプション設定は/etc/sysconfig/elasticsearchで設定できる。任意のユーザー権限で起動させてやりたければES_USERを変更するなど。

日本語を使えるようにする

日本語検索に対応するようにkuromojiというelasticsearchのプラグインをインストールする。
/usr/share/elasticsearch/bin
にpluginコマンドが入っているので*1プラグインを下記のコマンドでインストールする。

[root@server ~]# /usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji
-> Installing elasticsearch/elasticsearch-analysis-kuromoji...
Trying https://github.com/elasticsearch/elasticsearch-analysis-kuromoji/zipball/master... (assuming site plugin)
Downloading .....DONE
Plugin installation assumed to be site plugin, but contains source code, aborting installation...

・・・ありゃ。失敗した。バージョンが必要みたい。1.4.0が最新のようなので

[root@server ~]# /usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/1.4.0
-> Installing elasticsearch/elasticsearch-analysis-kuromoji/1.4.0...
Trying http://download.elasticsearch.org/elasticsearch/elasticsearch-analysis-kuromoji/elasticsearch-analysis-kuromoji-1.4.0.zip...
Downloading ..................................................................................................................................................................................................................DONE
Installed analysis-kuromoji

<続く(つもり)>

*1:OSによって違うだろうけど