読者です 読者をやめる 読者になる 読者になる

Ola Kae Tode Tai

すべてのエンジニアに、追い風を祈る。

Ubuntu14.04にElasticsearch 2.1.1をインストールする

プログラミング

Ubuntu14.04にElasticsearch 2.1をインストールする方法の備忘録です。

f:id:kironono:20160125131108j:plain

ElasticsearchはLuceneベースの全文検索エンジンです。

Elasticsearch | Elastic

Elasticsearchの勉強をするためにインストールしてみます。Ubuntu14.04は適当なVagrant boxを探してきて用意しました。

構成

Elasticsearch 2.1.1はOracleかOpenJDKのJava 8 update 20またはJava 7 update 55より新しいバージョンのJVMが必要です。 今回はOpenJDKを使います。

  • Ubuntu 14.04
  • OpenJDK 1.8.0_72
  • Elasticsearch 2.1.1

OpenJDKをインストール

openjdk-8-jdkパッケージのインストール

OpenJDKのリポジトリを追加して、openjdk-8-jdkをインストールします。

vagrant@vagrant-ubuntu-trusty:~$ sudo apt-get update
vagrant@vagrant-ubuntu-trusty:~$ sudo apt-get install software-properties-common
vagrant@vagrant-ubuntu-trusty:~$ sudo add-apt-repository ppa:openjdk-r/ppa
vagrant@vagrant-ubuntu-trusty:~$ sudo apt-get update
vagrant@vagrant-ubuntu-trusty:~$ sudo apt-get install openjdk-8-jdk

JAVA_HOME環境変数を設定

デフォルト環境変数JAVA_HOMEを設定して、再読み込みします。

vagrant@vagrant-ubuntu-trusty:~$ echo 'JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"' | sudo tee -a /etc/environment
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
vagrant@vagrant-ubuntu-trusty:~$ source /etc/environment

バージョンの確認

インストールしたJavaのバージョンを確認します。

vagrant@vagrant-ubuntu-trusty:~$ java -version
openjdk version "1.8.0_72-internal"
OpenJDK Runtime Environment (build 1.8.0_72-internal-b05)
OpenJDK 64-Bit Server VM (build 25.72-b05, mixed mode)
vagrant@vagrant-ubuntu-trusty:~$ javac -version
javac 1.8.0_72-internal

Elasticsearchをインストール

リポジトリを追加

Elasticsearch 2.xのリポジトリを追加します。

vagrant@vagrant-ubuntu-trusty:~$ wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
OK
vagrant@vagrant-ubuntu-trusty:~$ echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
deb http://packages.elastic.co/elasticsearch/2.x/debian stable main

Elasticsearchをインストール

パッケージリストを更新して、Elasticsearchをインストールします。

vagrant@vagrant-ubuntu-trusty:~$ sudo apt-get update
vagrant@vagrant-ubuntu-trusty:~$ sudo apt-get install elasticsearch

自動起動の設定

システム起動時にelasticsearchサービスが起動するようにします。

vagrant@vagrant-ubuntu-trusty:~$ sudo update-rc.d elasticsearch defaults 95 10
 Adding system startup for /etc/init.d/elasticsearch ...
   /etc/rc0.d/K10elasticsearch -> ../init.d/elasticsearch
   /etc/rc1.d/K10elasticsearch -> ../init.d/elasticsearch
   /etc/rc6.d/K10elasticsearch -> ../init.d/elasticsearch
   /etc/rc2.d/S95elasticsearch -> ../init.d/elasticsearch
   /etc/rc3.d/S95elasticsearch -> ../init.d/elasticsearch
   /etc/rc4.d/S95elasticsearch -> ../init.d/elasticsearch
   /etc/rc5.d/S95elasticsearch -> ../init.d/elasticsearch
vagrant@vagrant-ubuntu-trusty:~$ sudo service elasticsearch start
 * Starting Elasticsearch Server                                                                                          [ OK ]

Elasticsearchの起動確認

デフォルトでは9200ポートでリッスンしています。 curllocalhost:9200 にアクセスするとノードの情報が返ってきます。

vagrant@vagrant-ubuntu-trusty:~$ curl -XGET localhost:9200
{
  "name" : "Ringo Kid",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "2.1.1",
    "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
    "build_timestamp" : "2015-12-15T13:05:55Z",
    "build_snapshot" : false,
    "lucene_version" : "5.3.1"
  },
  "tagline" : "You Know, for Search"
}

プラグインをインストール

Elasticsearchでよく利用するプラグインをインストールしておきます。

analysis-kuromoji は日本語の分かち書きのためのプラグインです。

analysis-icuUnicode正規化をおこなうためのプラグインです。

lmenezes/elasticsearch-kopf はノードの管理をGUIで行なうことができるプラグインです。

github.com

analysis-kuromojianalysis-icu はElasticsearch 2.x になって公式がリリースするようになったようです。

vagrant@vagrant-ubuntu-trusty:~$ cd /usr/share/elasticsearch/
vagrant@vagrant-ubuntu-trusty:/usr/share/elasticsearch$ sudo bin/plugin install analysis-kuromoji
vagrant@vagrant-ubuntu-trusty:/usr/share/elasticsearch$ sudo bin/plugin install analysis-icu
vagrant@vagrant-ubuntu-trusty:/usr/share/elasticsearch$ sudo bin/plugin install lmenezes/elasticsearch-kopf

Elasticsearchの設定

開発環境用に設定を変更しておきます。

network.host はElasticsearch 2.xからデフォルトでlocalhostバインドされるようになったようです。開発環境では外のIFからもアクセスしたいので指定しています。

vagrant@vagrant-ubuntu-trusty:~$ cat << EOF | sudo tee -a /etc/elasticsearch/elasticsearch.yml
> index.number_of_shards: 1
> index.number_of_replicas: 0
> network.host: 0.0.0.0
> EOF
index.number_of_shards: 1
index.number_of_replicas: 0
network.host: 0.0.0.0

再起動して設定を反映

再起動して、設定とプラグインを反映させます。

vagrant@vagrant-ubuntu-trusty:~$ sudo service elasticsearch restart
 * Stopping Elasticsearch Server                                                                                          [ OK ]
 * Starting Elasticsearch Server                                                                                          [ OK ]

KOPFの画面

http://localhost:9200/_plugin/kopf/ にブラウザでアクセスするとKOPFの画面が開きます。

ここからノードの状態を管理したり、簡単なクエリを発行したりできるみたいです。

(まだインデック等なにもない状態)

f:id:kironono:20160125125055j:plain

Elasticsearchに関する書籍

日本語の書籍は結構古いバージョンのElasticSearchのものしかないようです。

高速スケーラブル検索エンジン ElasticSearch Server

高速スケーラブル検索エンジン ElasticSearch Server

今のところ公式のドキュメントが一番よいみたいです。

Elasticsearch Reference [2.4] | Elastic