ElasticsearchをUbuntu・Debianにインストールする方法を解説しています。
Javaのインストール、PATHを通す作業は不要です。
本記事の内容
- Elasticsearchとは?
- Elasticsearchのシステム要件
- Elasticsearchのインストール
- Elasticsearchの動作確認
それでは、上記に沿って解説していきます。
Elasticsearchとは?
Elasticsearchとは、分散型で無料かつオープンな検索・分析エンジンです。
この説明は抽象的でなかなかイメージができないかもしれません。
このような抽象的な説明は、具体化すればイメージしやすいです。
Elasticsearchの具体的な用途は、以下。
- アプリ検索
- Webサイト検索
- エンタープライズサーチ
- ロギングとログ分析
- インフラメトリックとコンテナー監視
- アプリケーションパフォーマンス監視(APM)
- 地理空間データ分析と可視化
- セキュリティ分析
- ビジネス分析
一部でよくわからない用語があります。
ただ、かなりElasticsearchのイメージは掴めたのではないでしょうか。
共通して言えるのは、「大量データの中から探す」ことになります。
ここで疑問がわきませんか?
「データベースを検索するのと何が違うのか?」と。
確かに、データベースでも検索はできます。
正規化やインデックスを適切に行えば、ある程度の速度で検索が可能です。
しかし、データが大量になってくると話が変わります。
マシンスペックにもよりますが、10万件超えたらオワリみたいな感覚があります。
そこで、Elasticsearchの出番となります。
Elasticsearchは、検索に特化した検索エンジンです。
それなら、検索処理はElasticsearchに任せましょう。
つまり、データベースとElasticsearchは競合ではなく、協力関係にあるのです。
その際、データベースのデータをElasticsearchが扱いやすいように加工します。
加工(転置インデックス)して、別途保存しておきます。
何となくでもElasticsearchのイメージを掴めたら、OKです。
技術なんて、実際に利用してナンボですから。
利用していくうちに、より理解していきましょう。
以上、Elasticsearchの説明をしました。
次は、Elasticsearchのシステム要件を確認します。
Elasticsearchのシステム要件
現時点(2021年6月)での Elasticsearchの最新バージョンは、7.13.1です。
この最新バージョンは、2021年6月3日にリリースされています。
追記 2022年3月26日
Elasticsearch 8のインストールは、次の記事で解説しています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応となります。
- Windows
- macOS
- Linux
ソースも公開されています。
ビルドさえできれば、大抵のLinuxなら動くのでしょう。
問題となるのは、JDKです。
Elasticsearchは、Javaで開発されています。
そのため、JDKがインストールされていることが必須です。
ただし、自分でJDKを用意する必要はありません。
適したバージョンのOpenJDKが、 Elasticsearchにバンドル(付属)されています。
バンドルしていないElasticsearchを選択することも可能です。
なお、公式ではバンドル版を推奨しています。
余程の事情がない限りは、バンドル版をインストールしましょう。
以上、Elasticsearchのシステム要件について説明しました。
次は、Elasticsearchをインストールしていきましょう。
Elasticsearchのインストール
今回の検証では、次のOSにElasticsearchをインストールします。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"
まず、パッケージを確認します。
$ sudo apt show elasticsearch ree and Open, Distributed,N: パッケージ elasticsearch が見つかりません N: パッケージ elasticsearch が見つかりません E: パッケージが見つかりません
なにも見つかりません。
Ubuntuの公式リポジトリには、存在していないということです。
そこで、Elasticsearchの開発元が公開しているリポジトリを見に行くようにします。
そのための作業を行っていきます。
まずは、そのリポジトリ(パッケージ)の身元を確認するためにPGPキーをインストールします。
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - OK
次にリポジトリ定義を保存します。
$ echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list deb https://artifacts.elastic.co/packages/7.x/apt stable main
定義を確認します。
$ sudo cat /etc/apt/sources.list.d/elastic-7.x.list deb https://artifacts.elastic.co/packages/7.x/apt stable main
パッケージの取得先が保存されています。
では、この取得先をパッケージ管理システムに認識させましょう。
$ sudo apt-get update 取得:1 https://artifacts.elastic.co/packages/7.x/apt stable InRelease [10.4 kB] 取得:2 https://artifacts.elastic.co/packages/7.x/apt stable/main amd64 Packages [67.1 kB] ~省略~ 2,234 kB を 8秒 で取得しました (263 kB/s) パッケージリストを読み込んでいます... 完了
では、この段階で再度Elasticsearchのパッケージを確認します。
$ sudo apt show elasticsearch Package: elasticsearch Version: 7.13.1 Priority: optional Section: web Source: elasticsearch Maintainer: Elasticsearch Team <info@elastic.co> Installed-Size: 545 MB Depends: bash (>= 4.1), lsb-base (>= 4), libc6, adduser, coreutils (>= 8.4) Conflicts: elasticsearch-oss Homepage: https://www.elastic.co/ License: Elastic-License Download-Size: 327 MB APT-Sources: https://artifacts.elastic.co/packages/7.x/apt stable/main amd64 Packages Description: Distributed RESTful search engine built for the cloud Reference documentation can be found at https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html and the 'Elasticsearch: The Definitive Guide' book can be found at https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html N: 追加レコードが 35 件あります。表示するには '-a' スイッチを付けてください。
Elasticsearchのパッケージを認識できています。
あとは、aptコマンドでインストールするだけです。
$ sudo apt-get install elasticsearch
インストールには、少しだけ時間がかかります。
インストールが完了したら、次のように表示されます。
Creating elasticsearch group... OK Creating elasticsearch user... OK elasticsearch (7.13.1) を展開しています... elasticsearch (7.13.1) を設定しています ... Created elasticsearch keystore in /etc/elasticsearch/elasticsearch.keystore systemd (245.4-4ubuntu3.3) のトリガを処理しています ...
以上、Elasticsearchのインストールに関しての説明でした。
最後に、Elasticsearchの動作確認を行います。
Elasticsearchの動作確認
最初に、自動起動の設定をしておきましょう。
OS起動時に、自動的に立ち上がるように設定します。
$ sudo /bin/systemctl daemon-reload $ sudo /bin/systemctl enable elasticsearch.service Synchronizing state of elasticsearch.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable elasticsearch Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /lib/systemd/system/elasticsearch.service.
上記のコマンドを実行します。
これで、OS起動時にElasticsearchが自動起動するようになります。
不要な場合は、この設定はスルーで問題ありません。
また、Elasticsearchの起動と停止は次のコマンドで行います。
Elasticsearchの起動
sudo systemctl start elasticsearch.service
Elasticsearchの停止
sudo systemctl stop elasticsearch.service
動作確認を行う前に、Elasticsearchが起動していることを確認してください。
$ sudo systemctl status elasticsearch.service ● elasticsearch.service - Elasticsearch Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-06-07 12:28:25 JST; 2min 39s ago Docs: https://www.elastic.co Main PID: 6071 (java) Tasks: 57 (limit: 9513) Memory: 4.2G CGroup: /system.slice/elasticsearch.service ├─6071 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkadd> └─6276 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller 6月 07 12:28:17 ubuntu-focal systemd[1]: Starting Elasticsearch... 6月 07 12:28:25 ubuntu-focal systemd[1]: Started Elasticsearch.
「Active: active (running)」であることを確認しましょう。
Elasticsearchの起動を確認できたら、次のコマンドを実行しましょう。
$ curl http://localhost:9200 { "name" : "ubuntu-focal", "cluster_name" : "elasticsearch", "cluster_uuid" : "pVa7Ti20Q46Aep9dqalzww", "version" : { "number" : "7.13.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "9a7758028e4ea59bcab41c12004603c5a7dd84a9", "build_date" : "2021-05-28T17:40:59.346932922Z", "build_snapshot" : false, "lucene_version" : "8.8.2", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
上記のように表示されたら、Elasticsearchの動作確認は問題ありません。
Elasticsearchは、デフォルトで9200ポートを利用します。
以上、Elasticsearchの動作確認を説明しました。