Ubuntu16.04に全文検索エンジンElasticsearchをインストール

こんにちは、汐留みずほです。

個人的に管理しているシステムでElasticsearchとの連携機能を有効化する機会があったので、今回はElasticsearchのインストールについて書きます。

Elasticsearchとは?

Elasticsearchは、オープンソースの全文検索エンジンです。オランダ・アムステルダムに本社を置くElastic社が中心になって開発が進められています。全文検索エンジンを使用すると、大量にあるドキュメントデータの中から、目的のワードを含むドキュメントデータを高速に検索することが可能になります。

Elasticsearchのインストール

以下の環境にインストールします。

  • OS:Ubuntu Server 16.04
  • メモリ:2GB

Javaのインストール

ElasticsearchはJava製のソフトウェアなので、Javaのインストールが必要です。

$ sudo apt update
$ sudo apt install openjdk-8-jdk

以下のバージョン確認コマンドで正しく表示されれば完了です。

$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

Elasticsearchのインストール

作業時点での最新バージョンをインストールする前提で記載します。

2018/11/18時点の最新バージョンは6.5.0です。
リリースノート

以下のコマンドでElasticsearchをインストールします。

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

Elasticsearchを使用するための準備

外部ホストと接続できるように以下の行を追記します。

$ sudo vi /etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0

ElasticsearchはIPv4/IPv6の双方でListenしているので、環境によってはIPv6で接続しようとして失敗することがあります。そのため、hostsファイルで::1(IPv4でいう127.0.0.1に相当)の部分をコメントアウトします。

$ sudo vi /etc/hosts
#::1     localhost ip6-localhost ip6-loopback

以下のコマンドでElasticsearchの起動、自動起動の有効化をおこないます。

$ sudo systemctl start elasticsearch
$ sudo systemctl enable elasticsearch

Elasticsearchの動作テスト

以下のリクエストを実行して、Elasticsearchが応答するかを確認します。

$ curl http://localhost:9200
{
  "name" : "1TrqeNL",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "0T_QOnYcRp-L3Y3b7wf4cw",
  "version" : {
    "number" : "6.5.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "816e6f6",
    "build_date" : "2018-11-09T18:58:36.352602Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

同じリクエストを、Elasticsearchに接続したいリモートホストからも実行してみます。

$ curl http://es6.example.com:9200/
{
  "name" : "1TrqeNL",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "0T_QOnYcRp-L3Y3b7wf4cw",
  "version" : {
    "number" : "6.5.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "816e6f6",
    "build_date" : "2018-11-09T18:58:36.352602Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

さいごに

以上でElasticsearchのインストールと、使用するための最低限の設定は完了です。今回はElasticsearchを単体で使用する要件だったのですが、Elastic Stackと呼ばれるソフトウェア群に含まれる可視化ツールKibanaや、ログ収集ツールLogstashなどを組み合わせた具体的活用法についてもいずれ書きたいと思います。