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

Carpe Diem

備忘録。https://github.com/jun06t

ElasticSearch 2.x のインストール

Elasticsearch

概要

メジャーバージョンアップでちょこちょこ変更点があるのでその対応を含めたインストール方法です。

環境

Java8のインストール

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

環境変数とかの設定をしてくれてJava8をデフォルトに設定する為に以下のパッケージを入れます。

$ sudo apt-get install oracle-java8-set-default

確認します。

$ java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

$ javac -version
javac 1.8.0_66

ElasticSearchのインストール

ElasticSearchのリポジトリを追加します。

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

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

$ sudo apt-get update && sudo apt-get install elasticsearch

自動起動設定をしてサービスを起動すれば完了です。

$ sudo update-rc.d elasticsearch defaults 95 10
$ sudo service elasticsearch start

curlで動作確認します。

$ curl localhost:9200
{
  "name" : "Rahne Sinclair",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "2.1.0",
    "build_hash" : "72cd1f1a3eee09505e036106146dc1949dc5dc87",
    "build_timestamp" : "2015-11-18T22:40:03Z",
    "build_snapshot" : false,
    "lucene_version" : "5.3.1"
  },
  "tagline" : "You Know, for Search"
}

設定の編集

/etc/default/elasticsearch

ヒープサイズを変更します。搭載メモリの半分が推奨値です。今回VMが1Gのメモリを搭載しているとします。

ES_HEAP_SIZE=512m

またスワップを禁止するため以下の設定をしておきます。

MAX_LOCKED_MEMORY=unlimited

ファイルディスクリプタを変更します。ElasticSearchが開けるファイルの数は、32kまたは64kを公式では推奨してます。

MAX_OPEN_FILES=65535

/etc/elasticsearch/elasticsearch.yml

シャードとレプリカ数を指定します。
今回はVM1台なのでシャードは1、レプリカは0です。
ちなみにデフォルトはシャード5、レプリカ1です。

index.number_of_shards: 1
index.number_of_replicas: 0

スワップを禁止するので以下の設定を追加。

bootstrap.mlockall: true

2.0からbind_addresslocalhostのみになったので外部アクセスも許可しておきます。

network.host: 0.0.0.0

設定の確認

pidを調べて

# ps aux | grep elastic
elastic+  1091  6.7 67.2 2538032 684736 ?      SLl  08:17   0:05 /usr/bin/java -Xms512m -Xmx512m -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/usr/share/elasticsearch -cp /usr/share/elasticsearch/lib/elasticsearch-2.1.0.jar:/usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch start -d -p /var/run/elasticsearch/elasticsearch.pid --default.path.home=/usr/share/elasticsearch --default.path.logs=/var/log/elasticsearch --default.path.data=/var/lib/elasticsearch --default.path.conf=/etc/elasticsearch

環境変数チェック

# strings /proc/1091/environ 
UPSTART_INSTANCE=
HOSTNAME=vagrant-ubuntu-trusty-64
runlevel=2
UPSTART_JOB=rc
TERM=linux
ES_HEAP_SIZE=512m
PATH=/bin:/usr/bin:/sbin:/usr/sbin
RUNLEVEL=2
PREVLEVEL=N
UPSTART_EVENTS=runlevel
PWD=/usr/share/elasticsearch
previous=N

HEAPが設定されてます。

ファイルディスクリプタをチェック

# cat /proc/1091/limits 
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             7874                 7874                 processes 
Max open files            65535                65535                files     
Max locked memory         unlimited            unlimited            bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       7874                 7874                 signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us 

65535になってます。

最後にスワップが禁止になってるかチェック

# curl http://localhost:9200/_nodes/process?pretty
{
  "cluster_name" : "elasticsearch",
  "nodes" : {
    "YcxJI41yRMK5cQWAlCj5Lg" : {
      "name" : "Bible John",
      "transport_address" : "10.0.2.15:9300",
      "host" : "10.0.2.15",
      "ip" : "10.0.2.15",
      "version" : "2.1.0",
      "build" : "72cd1f1",
      "http_address" : "10.0.2.15:9200",
      "process" : {
        "refresh_interval_in_millis" : 1000,
        "id" : 1091,
        "mlockall" : true
      }
    }
  }
}

"mlockall" : trueになっていればOKです。

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

KuromojiICU Analysisが公式プラグインになりました。

よく使う head, kuromoji, icu をインストールします。

$ cd /usr/share/elasticsearch/
$ sudo bin/plugin install mobz/elasticsearch-head
$ sudo bin/plugin install analysis-kuromoji
$ sudo bin/plugin install analysis-icu

再起動しておきます。

$ sudo service elasticsearch restart

以上です。お疲れ様でした。

ソース