Carpe Diem

備忘録

ElasticSearch のインストール

概要

簡単に全文検索を可能にしてくれるElasticSearchの実装です。
機能が多い分説明も増えるので少しずつ紹介していこうと思います。

環境

Java8のインストール

We recommend installing the Java 8 update 20 or later, or Java 7 update 55 or later. Previous versions of Java 7 are known to have bugs that can cause index corruption and data loss.

とあるのでJava8をインストールします。もし既にOpenJDKを導入していたら

$ sudo apt-get purge openjdk*

で削除しておきます。
では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_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

$ javac -version
javac 1.8.0_60

ElasticSearchのインストール

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

$ wget -qO - https://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -
$ echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.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
{
  "status" : 200,
  "name" : "Crime-Buster",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "1.7.2",
    "build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec",
    "build_timestamp" : "2015-09-14T09:49:53Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.4"
  },
  "tagline" : "You Know, for Search"
}

設定の編集

設定するconfigが2つあるので注意してください。

メモリ

搭載メモリの半分が推奨値です。今回VMが2Gのメモリを搭載しているとします。

/etc/default/elasticsearchを編集

ES_HEAP_SIZE=1g

もしスワップを禁止する場合は以下の設定をします。
/etc/default/elasticsearchを編集

MAX_LOCKED_MEMORY=unlimited

次に/etc/elasticsearch/elasticsearch.ymlを編集

bootstrap.mlockall: true

ファイルディスクリプタ

ElasticSearchが開けるファイルの数は、32kまたは64kを公式では推奨してます。

/etc/default/elasticsearchを編集。

MAX_OPEN_FILES=65535

シャード

/etc/elasticsearch/elasticsearch.ymlを編集。
処理を並列化させパフォーマンスを向上させるためなので、基本的にサーバ台数分にします。
1台に複数シャードを設定しても効果は低いです。
今回は単なる検証用のため複数シャードを設定してみます。

index.number_of_shards: 5

レプリカ

/etc/elasticsearch/elasticsearch.ymlを編集。
デフォルトは1です。local開発では1台だけだと思うので、このままだとレプリカサーバが足りなくてステータスがyellowになります。
なのでlocal開発では0にしておきます。

index.number_of_replicas: 0

ソース