1. Javaのバージョンを1.7.xにする
もし問題なければ飛ばす。単純アップデートだと古いのものこってて競合するそうなので、古いのはremoveするhttp://stackoverflow.com/questions/25518908/issues-after-elasticsearch-1-3-2-upgrade
# java -version # yum install java-1.7.0-openjdk # yum remove install openjdk-6-jre # yum remove java-1.6.0-openjdk
2. ElasticSearch本体及びプラグインのインストール
# rpm -ivh https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.0.noarch.rpm # /usr/share/elasticsearch/bin/plugin --install mobz/elasticsearch-head # /usr/share/elasticsearch/bin/plugin --install royrusso/elasticsearch-HQ # /usr/share/elasticsearch/bin/plugin --install elasticsearch/elasticsearch-analysis-kuromoji/2.4.1 # /usr/share/elasticsearch/bin/plugin --install elasticsearch/elasticsearch-cloud-aws/2.4.0※head, HQはおこのみで。
※kuromoji, cloud-awsはelasticsearchのバージョンに応じて入れるバージョンが変わる。それぞれ公式のsetup情報にバージョン対応表が載ってるので確認。上記は1.4.0の場合。
3. 設定ファイル
1台構成ならcluster.name位設定しとけばほかはいらない。EC2で複数台サーバを連携する場合は自動でネゴシエートするためのbroadcastが使えないので、cloud-awsプラグインを入れて設定を行う。また利用するEC2インスタンスはSecurity Groupで9200-9400のPortを開けておく。cluster.name: hoge # multi-server for EC2 settings discovery.zen.ping.multicast.enabled: false cloud.aws.access_key: XXXX cloud.aws.secret_key: XXXX cloud.aws.region: ap-northeast discovery.ec2.host_type: private_ip discovery.ec2.ping_timeout: 5s discovery.type: ec2 discovery.ec2.groups: IDorNAME※access_key, secret_keyはAWSのIAM Roleの設定で、EC2のDescribeの権限を付けたものを設定
※host_typeはpublic_ipでも問題ないと思われる(未確認)
※ regionなしだと接続できずv2.4.0
4. 起動
# chkconfig --add elasticsearch on # /etc/init.d/elasticsearch start
他
PHPのクライアントをComposerでインストール
$ php ../composer.phar require elasticsearch/elasticsearch:">=1.0"
HQ, headによる状態確認
ttp://ipaddar:9200/_plugin/head/ttp://ipaddar:9200/_plugin/HQ/
プラグインをインストールできてれば、上記でアクセス可能。
Multi masterは出来ないので複数台構成にしてもmasterサーバはひとつ。可用性を考えるなら、dataを持たないゲートウェイ的なマスタを作り、そこに子をぶら下げる形か。
trittonn, mroonga, Lucene, Solrと比べて検索システムの中ではだいぶ導入が容易な印象。運用考えると日本語対応した今はCloudSearch使ったほうが楽かも。ただElasticSearchからCloudSearchへのスイッチはサービス拡大に応じて行えるレベルかな。
0 件のコメント:
コメントを投稿