【初心者向け】Elasticsearch ダウンロードガイド:最初のステップを踏み出そう!
はじめに:Elasticsearchの世界へようこそ
インターネット上の膨大な情報や、私たちの身の回りで日々生成されるデータ。これらを効率的に、かつ高速に検索、分析、活用するためには、強力なツールが必要です。そこで登場するのが「Elasticsearch」です。
Elasticsearchは、Apache Luceneをベースにしたオープンソースの分散型RESTful検索・分析エンジンです。もともとは、企業内の文書検索システムとして開発されましたが、その強力な検索機能、リアルタイムに近い分析能力、そして高いスケーラビリティから、現在ではログ分析、メトリクス監視、セキュリティ分析、ビジネスインテリジェンス、そしてもちろんWebサイトやアプリケーションの全文検索など、多岐にわたる用途で活用されています。
「分散型」とは、複数のコンピュータ(ノード)で連携して動作できることを意味します。これにより、扱うデータ量が爆発的に増えても、ノードを追加するだけで性能や容量をスケールアップできます。また、「RESTful」とは、インターネットの標準的な技術であるHTTPを使って操作できることを意味します。これにより、様々なプログラミング言語やツールから簡単にElasticsearchを利用できます。
この記事では、「Elasticsearchを使ってみたいけれど、何から始めればいいのか分からない」「ダウンロードやインストールって難しそう」と感じている初心者の方に向けて、Elasticsearchをあなたのコンピュータにダウンロード・インストールするための具体的なステップを、可能な限り分かりやすく解説します。
ダウンロード・インストール方法はいくつかありますが、この記事では主に以下の方法を取り上げ、それぞれの詳細な手順を説明します。
- ZIP/TAR.GZ形式: 手軽に試したい方向け。解凍するだけである程度準備ができます。
- DEB/RPM形式: Linuxユーザー向け。パッケージ管理システムを使ってインストールします。
- Homebrew: macOSユーザー向け。こちらもパッケージ管理システムを使います。
- Dockerイメージ: コンテナ技術に興味がある方向け。隔離された環境で実行できます。
- Elastic Cloud: マネージドサービスを利用したい方向け。インストール不要で始められます。
この記事を読み終える頃には、あなたの手元でElasticsearchが動き出し、その第一歩を踏み出せていることでしょう。さあ、Elasticsearchの世界へ一緒に旅立ちましょう!
ダウンロード前の準備:Elasticsearchを動かすために必要なこと
Elasticsearchのダウンロードとインストールに進む前に、いくつか確認しておきたいことがあります。これらはElasticsearchをスムーズに動作させるために必要な基本的な要件です。
1. Java Development Kit (JDK) のインストール
ElasticsearchはJavaで開発されており、動作するためにはJavaの実行環境が必要です。具体的には、Oracle JDKまたはOpenJDKのバージョン11以上が推奨されています(バージョンによっては異なる場合もあるため、利用するElasticsearchのバージョンに対応したJDKのバージョンを公式ドキュメントで確認することが最も確実です)。
なぜJDKが必要なのかというと、Elasticsearch自体がJava仮想マシン(JVM)上で動作するアプリケーションだからです。JDKにはJVMだけでなく、Javaのプログラムを開発・実行するためのツール一式が含まれています。Elasticsearchを実行するだけであれば、JRE(Java Runtime Environment)だけでも理論上は可能ですが、トラブルシューティングや互換性の観点から、公式ではJDKの利用が推奨されています。
JDKがインストールされているかどうかを確認するには、ターミナル(Windowsの場合はコマンドプロンプトやPowerShell)を開いて以下のコマンドを実行します。
bash
java -version
または
bash
javac -version
もしJavaがインストールされていれば、バージョン情報が表示されます。表示されない場合や、バージョンが古い場合は、最新のJDKをインストールする必要があります。
JDKのインストール方法:
- OpenJDK: OpenJDKの公式ウェブサイトや、Adoptium (旧 AdoptOpenJDK)、Amazon Correttoなど、様々な提供元からダウンロードできます。多くのLinuxディストリビューションでは、パッケージ管理システム (
apt,yum,dnf) を使って簡単にインストールできます。 - Oracle JDK: Oracleの公式ウェブサイトからダウンロードできます。商用利用の場合はライセンス形態に注意が必要です。
インストール手順はOSによって異なりますが、一般的にはインストーラーを実行するか、パッケージ管理コマンドを使います。インストール後は、システムが正しくJavaのインストール場所を認識しているか確認するために、再度java -versionコマンドを実行してみましょう。
2. システム要件の確認
Elasticsearchを快適に動作させるためには、ある程度のシステムリソースが必要です。推奨される具体的な数値は用途やデータ量によって大きく異なりますが、開発やテスト目的で単一ノードのElasticsearchを動かす場合でも、以下のリソースを目安としてください。
- メモリ (RAM): 最低でも2GB、推奨は4GB以上。JVMのヒープ領域に割り当てられるメモリが性能に大きく影響します。デフォルトでは全メモリの半分(最大32GB)が割り当てられます。
- ディスク容量: Elasticsearchはデータをディスクに保存します。保存したいデータ量に加えて、ログファイルやオペレーションに必要な一時ファイルのために十分な空き容量が必要です。SSDの使用が強く推奨されます。
- CPU: データ量やクエリの複雑さによりますが、一般的なPCに搭載されているCPUで十分始めることができます。
- オペレーティングシステム (OS): Windows, macOS, Linux (様々なディストリビューション) で動作します。各OSの推奨バージョンについては、利用するElasticsearchのバージョンに応じた公式ドキュメントを参照してください。基本的には、比較的新しいバージョンのOSであれば問題なく動作します。
これらの要件を満たしているか、お使いのコンピュータのスペックを確認しておきましょう。特にメモリとディスク容量はElasticsearchの動作安定性と性能に直結するため重要です。
3. 事前知識・ツールの準備
- コマンドライン/ターミナルの基本操作: ZIP/TAR.GZ版のインストールや、サービス管理、APIへのアクセスなど、コマンドラインを使う場面が多くあります。基本的なコマンド(ディレクトリ移動
cd、ファイル一覧表示ls/dir、ファイルのコピーcp/copy、ファイルの削除rm/del、コマンド実行)に慣れておくとスムーズです。 - テキストエディタ: 設定ファイル(
elasticsearch.ymlなど)を編集するために必要です。OS標準のもの(メモ帳、TextEditなど)でも構いませんし、Visual Studio CodeやSublime Text、Vim、Emacsなど、お好みのエディタを用意しましょう。 - curlコマンド: ElasticsearchのREST APIにアクセスして、クラスターの状態確認などを行うのに便利です。多くのOSに標準でインストールされています。インストールされていない場合は、別途インストールが必要になる場合があります。
これらの準備が整ったら、いよいよElasticsearchのダウンロードに進みましょう!
Elasticsearchのダウンロード方法
Elasticsearchは、その利用環境や目的に応じていくつかの形式で提供されています。ここでは、それぞれのダウンロード方法を解説します。
公式サイトからのダウンロードページ:https://www.elastic.co/jp/downloads/elasticsearch
このページにアクセスすると、様々なダウンロードオプションが表示されます。
1. ZIP/TAR.GZ形式 (Windows/macOS/Linux共通 – 手軽に試したい方向け)
これは、Elasticsearchの実行に必要なファイル一式が圧縮された形式です。インストールというよりは「展開して実行する」感覚に近いため、システム全体に影響を与えずに手軽に試したい場合に適しています。WindowsではZIP形式、macOSおよびLinuxではTAR.GZ形式を選択します。
手順:
- 上記のダウンロードページにアクセスします。
- お使いのOSに対応する「.zip」または「.tar.gz」のリンクをクリックしてファイルをダウンロードします。
- ダウンロードしたファイルを任意の場所に解凍します。
- Windows: エクスプローラーでZIPファイルを右クリックし、「すべて展開」を選択します。
- macOS/Linux: ターミナルを開き、ダウンロードしたファイルがあるディレクトリに移動し、以下のコマンドを実行します。
bash
# TAR.GZ形式の場合
tar -xzf elasticsearch-<version>-<os>.<extension>
例:tar -xzf elasticsearch-8.x.x-linux-x86_64.tar.gz
解凍すると、elasticsearch-<version> のような名前のディレクトリが作成されます。これがElasticsearchのインストールディレクトリ(ホームディレクトリ)になります。
2. DEB/RPM形式 (Linuxユーザー向け – パッケージ管理システムを利用)
Debian系のLinux(Ubuntu, Debianなど)ではDEB形式、Red Hat系のLinux(CentOS, RHEL, Fedoraなど)ではRPM形式が利用できます。これらの形式でインストールすると、Elasticsearchがシステムのサービスとして登録され、OSの起動時に自動的に起動したり、システムコマンドで簡単に管理できるようになります。本番環境や長期的に利用する環境では、この方法が推奨されます。
手順 (DEB形式 – Ubuntu/Debianの例):
-
Elasticsearchのリポジトリをシステムに追加します。これにより、パッケージ管理システム (
apt) を使ってElasticsearchをインストール・アップデートできるようになります。まず、Elastic社のGPGキーをシステムに追加します。
bash
# root権限またはsudoで実行
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
このコマンドは、Elastic社の公開鍵をダウンロードし、GPGキーとしてシステムに登録しています。これにより、ダウンロードするパッケージの正当性を確認できます。 -
Elasticsearchリポジトリの情報を
sources.list.dディレクトリに追加します。
bash
# root権限またはsudoで実行
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
このコマンドは、elastic-8.x.listというファイルを作成し、その中にElasticsearch 8.xシリーズのリポジトリ情報を書き込んでいます。signed-by=/usr/share/keyrings/elastic.gpgは、先ほど追加したGPGキーを使ってリポジトリの署名を確認することを意味します。利用したいバージョンに応じて8.xの部分を適切に変更してください。 -
パッケージリストを更新します。
bash
sudo apt update
これにより、追加したElasticsearchリポジトリの情報がシステムに反映されます。 -
Elasticsearchをインストールします。
bash
sudo apt install elasticsearch
このコマンドでElasticsearchがダウンロードされ、システムにインストールされます。依存関係にあるパッケージも同時にインストールされます。
手順 (RPM形式 – CentOS/RHEL/Fedoraの例):
-
Elasticsearchのリポジトリ情報をyumまたはdnfの設定ファイルに追加します。
/etc/yum.repos.d/elasticsearch.repo(CentOS/RHEL) または/etc/yum.repos.d/elasticsearch.repo(Fedora) のような名前でファイルを作成し、以下の内容を記述します。
ini
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
name: リポジトリの名前
baseurl: パッケージのダウンロード元URL。利用したいバージョンに合わせて8.xを変更してください。
gpgcheck=1: GPGキーによる署名チェックを有効にします。
gpgkey: 使用するGPGキーのURL。
enabled=1: このリポジトリを有効にします。
autorefresh=1: リポジトリ情報を自動的に更新します。
type=rpm-md: リポジトリのタイプを指定します。ファイルの作成と内容の書き込みは、以下のコマンドでも実行できます(バージョンに合わせてURLを適宜変更してください)。
“`bashroot権限またはsudoで実行
sudo vi /etc/yum.repos.d/elasticsearch.repo # vi以外のお好みのエディタでOK
またはbashroot権限またはsudoで実行
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
“` -
GPGキーを手動でインポートする場合(
gpgkeyでURLを指定していれば不要な場合がありますが、念のため)。
bash
# root権限またはsudoで実行
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch -
Elasticsearchをインストールします。
“`bash
# CentOS/RHELの場合 (yum)
sudo yum install elasticsearchFedoraの場合 (dnf)
sudo dnf install elasticsearch
“`
このコマンドでElasticsearchがダウンロードされ、システムにインストールされます。
DEB/RPM形式でインストールした場合、設定ファイルは通常 /etc/elasticsearch/ ディレクトリに、データファイルは /var/lib/elasticsearch/ に、ログファイルは /var/log/elasticsearch/ に配置されます。また、システムサービスとして登録されるため、systemctlコマンド(Systemdを採用しているシステムの場合)で管理します。
3. Homebrew (macOSユーザー向け)
HomebrewはmacOSでソフトウェアのインストールを簡単に行えるパッケージ管理システムです。Homebrewがインストールされていれば、コマンド一つでElasticsearchをインストールできます。
手順:
- Homebrewがインストールされていない場合は、https://brew.sh/index_ja の手順に従ってインストールします。
- ターミナルを開き、以下のコマンドを実行してElasticsearchをインストールします。
bash
brew install elasticsearch
このコマンドは、Homebrewが管理するElasticsearchの最新バージョンをダウンロード・インストールします。
Homebrewでインストールした場合、Elasticsearchは通常 /usr/local/Cellar/elasticsearch/<version>/ または /opt/homebrew/Cellar/elasticsearch/<version>/ (Apple Silicon Macの場合) にインストールされます。設定ファイルは /usr/local/etc/elasticsearch/ または /opt/homebrew/etc/elasticsearch/ に配置されます。サービス管理もHomebrewのコマンドで行います。
4. Dockerイメージ (コンテナ技術に興味がある方向け)
Dockerは、アプリケーションとその実行に必要な環境をコンテナという形でパッケージ化する技術です。Dockerを使えば、OSや他のアプリケーションの影響を受けない隔離された環境でElasticsearchを実行できます。Docker Desktopがインストールされている必要があります。
手順:
- Docker Desktopがインストールされていない場合は、https://www.docker.com/products/docker-desktop/ からダウンロードしてインストールします。
-
ターミナル(またはDockerに対応したコマンドライン)を開き、ElasticsearchのDockerイメージを取得します。
bash
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.x.x # 使用したいバージョンを指定
これにより、Elasticsearchのイメージがローカルにダウンロードされます。バージョンは最新版または安定版を指定してください。例えば、docker pull docker.elastic.co/elasticsearch/elasticsearch:8.12.2のように具体的なバージョンを指定することを推奨します。 -
ダウンロードしたイメージを使ってコンテナを実行します。開発・テスト目的であれば、単一ノードのクラスターとして簡単に起動できます。
bash
docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.x.x
このコマンドのオプションの意味は以下の通りです。-d: コンテナをバックグラウンドで実行します。--name elasticsearch: コンテナにelasticsearchという名前をつけます。-p 9200:9200: ホストOSの9200ポートをコンテナの9200ポートにマッピングします。ElasticsearchのHTTP APIは通常9200ポートで待ち受けます。-e "discovery.type=single-node": 環境変数を設定します。これにより、単一ノードのクラスターとして起動します。これは開発・テスト環境で必須の指定です。本番環境ではノード検出方法を適切に設定する必要があります。docker.elastic.co/elasticsearch/elasticsearch:8.x.x: 使用するDockerイメージを指定します。
Dockerを使った起動方法は柔軟性があり、データ永続化のためにボリュームをマウントしたり、メモリ制限を設定したり、他のコンテナと連携させたりすることも可能ですが、まずはこの基本的なコマンドで起動できるか試してみましょう。
5. Elastic Cloud (マネージドサービス – インストール不要)
自分でソフトウェアをダウンロード・インストール・運用するのではなく、Elasticsearchをクラウド上で利用できるマネージドサービスです。インフラの管理や保守、スケーリングなどをElastic社が行ってくれるため、すぐにElasticsearchを使い始めたい場合や、運用負荷をかけたくない場合に最適です。有料サービスですが、フリートライアルが用意されています。
手順:
- https://www.elastic.co/jp/cloud/elasticsearch-service にアクセスします。
- 「無料トライアルを開始」などのボタンをクリックし、アカウントを作成します。
- アカウント作成後、ログインしてデプロイメント(ElasticsearchクラスターやKibanaなどがセットになった環境)を作成します。クラウドプロバイダー(AWS, GCP, Azure)、リージョン、バージョンなどを選択します。
- デプロイメントが作成されると、ElasticsearchのエンドポイントURLや認証情報が表示されます。これを使ってElasticsearchにアクセスします。
Elastic Cloudを利用する場合、厳密には「ダウンロード」は行いませんが、最も手軽にElasticsearch環境を手に入れる方法の一つとして紹介しました。
各ダウンロード方法の詳細と起動
ダウンロードした形式によって、Elasticsearchの起動方法や設定ファイルの場所が異なります。それぞれの詳細を見ていきましょう。
1. ZIP/TAR.GZ形式での起動と基本設定
ダウンロードしたZIP/TAR.GZファイルを解凍してできたディレクトリ(例: elasticsearch-8.x.x)がElasticsearchのホームディレクトリです。このディレクトリには以下のようなサブディレクトリが含まれています。
bin: 実行可能なスクリプト (elasticsearch,elasticsearch-certutilなど)config: 設定ファイル (elasticsearch.yml,jvm.options,log4j2.propertiesなど)lib: Elasticsearchの実行に必要なJavaライブラリmodules: Elasticsearchのコア機能以外のモジュールplugins: インストールされたプラグインdata: (デフォルトでは作成されません) データが保存される場所logs: (デフォルトでは作成されません) ログファイルが出力される場所
起動方法:
- ターミナル(またはコマンドプロンプト/PowerShell)を開きます。
- Elasticsearchのホームディレクトリに移動します。
bash
cd /path/to/elasticsearch-8.x.x binディレクトリ内の実行可能スクリプトを実行します。- macOS/Linux:
bash
./bin/elasticsearch - Windows:
bash
.\bin\elasticsearch.bat
- macOS/Linux:
スクリプトを実行すると、Elasticsearchが起動処理を開始し、ログがコンソールに表示されます。起動が完了すると、ElasticsearchがAPIリクエストを受け付けられる状態になります。デフォルトでは、localhost:9200 でHTTP APIが、localhost:9300 でTransport層(内部通信用)が待ち受けます。
バックグラウンドでの実行 (macOS/Linux):
コンソールを占有せずにバックグラウンドで実行したい場合は、-d オプションをつけます。
bash
./bin/elasticsearch -d
ログはデフォルトではコンソールに出力されず、logsディレクトリにファイルとして出力されます。
停止方法:
コンソールで起動している場合は、Ctrl+Cで停止できます。
バックグラウンドで実行している場合は、ps aux | grep elasticsearch などでプロセスのPIDを確認し、kill <PID> コマンドで停止します。
基本設定 (config/elasticsearch.yml):
Elasticsearchの重要な設定は、config/elasticsearch.yml ファイルで行います。YAML形式で記述されています。初めて起動する場合、いくつかの設定を確認しておくと良いでしょう。
cluster.name: クラスターの名前です。デフォルトはelasticsearchです。複数のElasticsearchインスタンスをクラスターとして動作させる場合に重要になりますが、単一ノードで試す場合も分かりやすい名前をつけておくと良いでしょう。node.name: ノードの名前です。デフォルトではホスト名が使われます。これも任意で設定できます。network.host: Elasticsearchが待ち受けるIPアドレスを指定します。デフォルトではlocalhostです。外部からアクセス可能にしたい場合は、特定のIPアドレスや0.0.0.0を指定しますが、セキュリティ上のリスクがあるため注意が必要です。開発環境ではlocalhostのままが安全です。http.port: HTTP APIが使用するポートです。デフォルトは9200です。他のアプリケーションとポートが競合する場合は変更します。discovery.seed_hosts: クラスターを構成するノードのホストリストです。単一ノードで起動する場合、この設定は不要です。複数のノードでクラスターを組む際に、他のノードを見つけるために使われます。initial_master_nodes: ブートストラップ段階でマスターノードとして選出される候補ノードのリストです。複数のノードでクラスターを組む際に必須の設定です。単一ノードの場合は通常設定不要ですが、バージョンによっては明示的に自身のnode.nameを指定する必要がある場合があります(公式ドキュメントで確認してください)。
config/jvm.options ファイルでは、Java仮想マシン(JVM)の設定、特にヒープメモリのサイズなどを調整できます。デフォルトでは、システムメモリの半分が割り当てられるようになっていますが、最小 (-Xms) と最大 (-Xmx) を同じ値に設定することが推奨されます(例: -Xms4g, -Xmx4g)。ただし、システムの合計メモリの半分を超えないように注意が必要です。
設定ファイルを変更した場合は、Elasticsearchを再起動する必要があります。
2. DEB/RPM形式での起動と管理 (Linux)
DEB/RPM形式でインストールした場合、Elasticsearchはシステムのサービスとして登録されます。Systemdを使用しているシステム(多くの最近のLinuxディストリビューション)では、systemctlコマンドでElasticsearchサービスを管理します。
サービス管理コマンド:
- 起動:
bash
sudo systemctl start elasticsearch.service - 停止:
bash
sudo systemctl stop elasticsearch.service - ステータス確認:
bash
sudo systemctl status elasticsearch.service
このコマンドを実行すると、Elasticsearchサービスが現在どのような状態か(active/inactiveなど)、エラーが出ていないかなどを確認できます。 - OS起動時の自動起動を有効化:
bash
sudo systemctl enable elasticsearch.service - OS起動時の自動起動を無効化:
bash
sudo systemctl disable elasticsearch.service - 設定変更後のリロード: 設定ファイル (
/etc/elasticsearch/elasticsearch.ymlなど) を変更した場合、サービスを再起動する必要があります。
bash
sudo systemctl restart elasticsearch.service
設定ファイルの場所:
- 主設定ファイル:
/etc/elasticsearch/elasticsearch.yml - JVMオプション:
/etc/elasticsearch/jvm.options - ログ設定:
/etc/elasticsearch/log4j2.properties - データディレクトリ:
/var/lib/elasticsearch - ログディレクトリ:
/var/log/elasticsearch
設定ファイルを変更する場合は、適切な権限(通常はroot権限)でエディタを開き、編集後、サービスを再起動してください。
3. Homebrewでの起動と管理 (macOS)
Homebrewでインストールした場合も、サービスとして管理するのが便利です。Homebrewにはサービス管理用のコマンドが用意されています。
サービス管理コマンド:
- 起動:
bash
brew services start elasticsearch - 停止:
bash
brew services stop elasticsearch - ステータス確認:
bash
brew services list
または
bash
brew services status elasticsearch - OSログイン時の自動起動を有効化:
bash
brew services enable elasticsearch - OSログイン時の自動起動を無効化:
bash
brew services disable elasticsearch
設定ファイルの場所:
- 主設定ファイル:
/usr/local/etc/elasticsearch/elasticsearch.ymlまたは/opt/homebrew/etc/elasticsearch/elasticsearch.yml - JVMオプション:
/usr/local/etc/elasticsearch/jvm.optionsまたは/opt/homebrew/etc/elasticsearch/jvm.options
設定ファイルを変更した場合は、brew services restart elasticsearch コマンドでサービスを再起動してください。
4. Dockerイメージでの起動と管理
DockerでElasticsearchを起動した場合、コンテナとして実行されます。コンテナの管理はdockerコマンドで行います。
コンテナ管理コマンド:
- 起動 (既にコンテナが存在する場合):
bash
docker start elasticsearch # elasticsearchはコンテナ名
先にdocker runで作成したコンテナを再度起動する場合に使用します。 - 停止:
bash
docker stop elasticsearch
Graceful shutdown(正常終了)を行います。 - 強制停止:
bash
docker kill elasticsearch - コンテナの状態確認:
bash
docker ps # 起動中のコンテナ一覧
docker ps -a # 全てのコンテナ一覧 (停止中のものも含む)
docker psの出力で、STATUSがUp ...となっていれば起動中です。 - ログの確認:
bash
docker logs elasticsearch
コンテナ内部でElasticsearchが出力しているログを確認できます。起動時のエラー確認などに便利です。 - コンテナの削除:
bash
docker rm elasticsearch # コンテナを停止してから削除
docker rm -f elasticsearch # 強制停止して削除
コンテナを完全に削除したい場合に使用します。データボリュームをマウントしていない場合、コンテナ削除でデータも失われます。 - Dockerイメージの削除:
bash
docker rmi docker.elastic.co/elasticsearch/elasticsearch:8.x.x
ダウンロードしたイメージを削除したい場合に使用します。そのイメージを使っているコンテナが存在しないことを確認してから実行してください。
設定方法:
Dockerコンテナの場合、設定は主に以下の方法で行います。
- 環境変数:
docker runコマンドの-eオプションを使って環境変数を渡す方法が最も手軽です。例えば、-e "cluster.name=my-docker-cluster"のように指定します。前述のdiscovery.type=single-nodeも環境変数です。 -
設定ファイルのボリュームマウント: ホストOS上の設定ファイルをコンテナ内部の
/usr/share/elasticsearch/config/elasticsearch.ymlなどにマウントすることで、詳細な設定を行うことができます。
bash
docker run -d --name elasticsearch \
-p 9200:9200 \
-e "discovery.type=single-node" \
-v /path/to/your/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
docker.elastic.co/elasticsearch/elasticsearch:8.x.x
この場合、config/elasticsearch.yml内のnetwork.hostはDockerコンテナ内で解決できるIPアドレスにする必要があるなど、少し注意が必要です。 -
カスタムイメージの作成: Dockerfileを作成し、ベースイメージの上にカスタム設定ファイルを配置したり、プラグインをインストールしたりした独自のイメージを作成する方法です。より高度な設定や環境構築に向いています。
開発・テスト目的であれば、まずは環境変数 -e "discovery.type=single-node" で起動し、必要に応じてポートマッピングやデータボリュームのマウントを追加していくのが良いでしょう。
5. Elastic Cloudでの利用
Elastic Cloudの場合は、上記のいずれのインストール手順も不要です。Elastic Cloudのコンソール上でデプロイメントを作成するだけで、数分後にはElasticsearchクラスターとKibanaが利用できる状態になります。
利用方法は、Elastic Cloudコンソールに表示されるエンドポイントURLに対して、KibanaやAPIクライアントからアクセスします。認証情報(ユーザー名/パスワードまたはAPIキー)が必要になります。
自分でインフラを管理する手間がない反面、カスタマイズの自由度やコスト面での考慮が必要になります。フリートライアルで試してみて、感触をつかむのが良いでしょう。
インストール後の確認:Elasticsearchはちゃんと動いている?
Elasticsearchが起動したら、正しく動作しているか確認してみましょう。最も簡単な確認方法は、HTTP APIにアクセスすることです。Elasticsearchはデフォルトで localhost:9200 ポートで待ち受けています。
ターミナルを開き、curl コマンドを使って以下のリクエストを実行します。
bash
curl http://localhost:9200/
うまく起動していれば、以下のようなJSON形式のレスポンスが返ってきます(バージョンによって内容は異なります)。
json
{
"name" : "your-node-name",
"cluster_name" : "your-cluster-name",
"cluster_uuid" : "...",
"version" : {
"number" : "8.x.x",
"build_flavor" : "...",
"build_type" : "...",
"build_hash" : "...",
"build_date" : "...",
"build_snapshot" : false,
"lucene_version" : "...",
"minimum_wire_compatibility_version" : "...",
"minimum_index_compatibility_version" : "..."
},
"tagline" : "You Know, for Search"
}
ここで、name がノード名、cluster_name がクラスター名、version がインストールしたElasticsearchのバージョンです。この情報が表示されれば、Elasticsearchのプロセス自体は起動しています。
次に、クラスターの状態を確認してみましょう。_cat APIは、クラスターの状態を人間が読みやすいテキスト形式で表示してくれる便利なAPIです。
クラスターの状態確認:
bash
curl http://localhost:9200/_cat/health?v
応答例:
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending no_ds co_dis cs_ins mo_det
1678886400 10:00:00 your-cluster-name green 1 1 0 0 0 0 0 0 0 0 0 0
status が green または yellow であれば、Elasticsearchクラスターは正常に機能しています。
* green: 全てのプライマリシャードとレプリカシャードが利用可能な状態です。最も健全な状態です。
* yellow: 全てのプライマリシャードは利用可能ですが、一部のレプリカシャードが割り当てられていない状態です。単一ノード構成ではレプリカシャードは割り当てられないため、通常 yellow になります。これは単一ノードとしては正常な状態です。
* red: 一部または全てのプライマリシャードが利用不可の状態です。データが失われている可能性があり、緊急対応が必要です。
ノードの状態確認:
bash
curl http://localhost:9200/_cat/nodes?v
応答例:
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1 25 50 5 0.10 0.15 0.20 dicluster - your-node-name
この出力で、起動しているノード(この場合は1台)の情報が表示されます。IPアドレス、メモリ・CPU使用率、ノードの役割などが確認できます。
これらのコマンドで情報が取得できれば、Elasticsearchは正常に起動し、APIを受け付けられる状態になっています。おめでとうございます!これでElasticsearchを使い始める準備が整いました。
セキュリティ設定 (Elasticsearch 8.x以降)
Elasticsearch 8.x以降のバージョンでは、デフォルトでセキュリティ機能(TLS暗号化通信と認証)が有効になっています。これはセキュリティレベルを向上させるための変更ですが、初心者にとっては少し戸惑うかもしれません。
ZIP/TAR.GZ版を初めて起動した場合、コンソールに以下のような情報が出力されることがあります。
-> The distribution has security features enabled by default.
-> Authentication is required and enabled.
-> TLS is enabled and required between nodes.
-> TLS is enabled and required for HTTP.
...
-> Generated security certificates for HTTP and TLS
...
-> Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
<generated_elastic_password>
...
-> Enrollment token for Kibana (use this to connect Kibana with Elasticsearch):
<generated_enrollment_token>
これは、ユーザー elastic のパスワードと、Kibanaを接続するためのエンロールメントトークンが表示されています。これらの情報は初回起動時に生成される重要な情報なので、必ず控えておいてください。
もし、何らかの理由で認証やTLSを無効にしたい場合は、config/elasticsearch.ymlで設定を変更する必要がありますが、本番環境やインターネットに公開する環境では絶対に無効にしないでください。ローカルの開発環境であれば、一時的に無効にすることも可能ですが、Elasticsearchの利用が進むにつれてセキュリティ設定は必須となりますので、早い段階で慣れておくことをお勧めします。
APIにアクセスする際、認証が必要になった場合は、curl コマンドに認証情報を付加する必要があります。例えば、生成されたelasticユーザーのパスワードを使って認証する場合です。
bash
curl -u elastic:<generated_elastic_password> http://localhost:9200/_cat/health?v
(-u オプションの後にユーザー名とパスワードをコロン区切りで指定します)
パスワードを忘れた場合は、bin/elasticsearch-reset-password コマンドでリセットできます。
DEB/RPM版やHomebrew版でも、サービスとして初回起動された際にログにこれらの情報が出力されるか、別のコマンドで確認する手順が必要になります。詳細は利用しているバージョンとインストール方法の公式ドキュメントをご確認ください。
トラブルシューティング:うまくいかないときは
Elasticsearchの起動や確認がうまくいかない場合、いくつか考えられる原因と対処法があります。
1. Javaのバージョンが違う、またはインストールされていない
症状: Elasticsearch起動スクリプトを実行しても「javaコマンドが見つかりません」といったエラーが出る、または「Unsupported major.minor version」といったJavaのバージョンに関するエラーが出る。
原因: JDKが正しくインストールされていない、またはElasticsearchが必要とするバージョンと異なる。
対処法: Java Development Kit (JDK) がインストールされているか、そしてそのバージョンがElasticsearchの要件を満たしているか確認します。必要であれば、正しいバージョンのJDKをインストールまたは再インストールします。環境変数 JAVA_HOME が正しく設定されているか確認することも有効です。
2. ポートが既に使用されている
症状: Elasticsearchのログに「Address already in use (Bind failed)」のようなエラーが出力される。
原因: Elasticsearchが使用しようとしているポート(デフォルトでは9200と9300)が、他のアプリケーションによって既に使用されている。
対処法: 他のアプリケーションがこれらのポートを使用していないか確認します。もし使用している場合は、そのアプリケーションを停止するか、Elasticsearchの設定ファイル (elasticsearch.yml) で http.port や transport.port の値を別の未使用のポートに変更します。
3. メモリ不足
症状: Elasticsearchの起動に時間がかかる、起動中にエラーで終了する、パフォーマンスが非常に遅い、ログにOutOfMemoryErrorのようなエラーが出力される。
原因: システムメモリや、Elasticsearchに割り当てられたJVMヒープメモリが不足している。
対処法:
* システム全体のメモリ使用量を確認し、他の不要なアプリケーションを終了してメモリを解放します。
* Elasticsearchに割り当てるJVMヒープメモリのサイズを調整します。config/jvm.options ファイルで -Xms と -Xmx の値を、システムメモリの半分以下を目安に調整します。例えば、システムに8GBメモリがあるなら、4GB (-Xms4g -Xmx4g) を割り当てるといった具合です。変更後はElasticsearchを再起動してください。
* どうしてもメモリが足りない場合は、システムのメモリを増設するか、よりリソースのある環境で実行する必要があります。
4. ディスク容量不足
症状: Elasticsearchの起動に失敗する、データの書き込みに失敗する、ログにディスク関連のエラーが出力される。
原因: データディレクトリやログディレクトリのディスク空き容量が不足している。
対処法: 不要なファイルを削除してディスク空き容量を増やします。データディレクトリ (data フォルダや /var/lib/elasticsearch) が非常に大きくなっている場合、データの削除や、より大きな容量のディスクへの移行を検討する必要があります。
5. ファイルシステム権限の問題
症状: ログファイルやデータファイルを書き込めない、設定ファイルを読み込めないといったエラーが出力される。
原因: Elasticsearchを実行しているユーザーに、必要なディレクトリ(data, logs, configなど)への読み書き権限がない。
対処法: Elasticsearchを実行するユーザーが、Elasticsearchのホームディレクトリや、data、logs、config ディレクトリに対して適切な権限を持っているか確認します。ZIP/TAR.GZ版を手動で実行している場合は、実行ユーザーの権限を確認してください。DEB/RPM版やHomebrew版をサービスとして実行している場合は、通常 elasticsearch などの専用ユーザーが作成され、そのユーザーに必要な権限が付与されるようになっていますが、インストール手順に誤りがあったり、手動でファイル操作を行ったりした場合に権限問題が発生することがあります。必要に応じて chown や chmod コマンドで権限を修正します。
6. セキュリティ設定 (8.x以降の認証・TLS)
症状: curl http://localhost:9200/ にアクセスしても応答がない、または「401 Unauthorized」エラーが表示される。
原因: Elasticsearch 8.x以降でデフォルト有効化されたセキュリティ機能により、認証やTLS通信が必須になっているが、それらが正しく設定されていない、またはアクセス時に認証情報が提供されていない。
対処法:
* Elasticsearch起動ログに出力された elastic ユーザーのパスワードとKibanaエンロールメントトークンを控えているか確認します。
* curl コマンドでアクセスする場合は -u elastic:<password> オプションで認証情報を渡します。
* Kibanaから接続する場合は、エンロールメントトークンを使ってKibanaをElasticsearchに接続設定します。
* どうしてもセキュリティ設定なしで試したい場合は、開発環境に限り config/elasticsearch.yml で認証(xpack.security.enabled: false) や TLS (xpack.security.http.ssl: {enabled: false}) を無効にすることも可能ですが、これは非推奨であり、自己責任で行ってください。設定変更後は再起動が必要です。
ログの確認
トラブルシューティングを行う上で最も重要なのは、Elasticsearchが出力しているログを確認することです。
- ZIP/TAR.GZ版: デフォルトではコンソールに出力されるか、
-dオプションで実行した場合はlogsディレクトリ内のログファイル (elasticsearch.log) に出力されます。 - DEB/RPM版:
/var/log/elasticsearch/elasticsearch.logファイルに出力されます。systemctl status elasticsearchコマンドでも直近のログを確認できますし、journalctl -u elasticsearchコマンドでより詳細なシステムログを確認できます。 - Homebrew版:
/usr/local/var/log/elasticsearch/elasticsearch.logまたは/opt/homebrew/var/log/elasticsearch/elasticsearch.logに出力されます。brew services status elasticsearchコマンドでも確認できます。 - Docker版:
docker logs <container_name>コマンドで確認できます。
ログファイルには、起動時のエラーメッセージや、処理中の警告、エラーなどが詳細に記録されています。これらの情報を元に、問題の原因を特定し、対処することが可能です。エラーメッセージをコピーしてWeb検索することも、解決策を見つける上で非常に有効な手段です。
次のステップ:Kibanaのインストールとデータの投入
Elasticsearchが正常に動作していることを確認できたら、次はElasticsearchをより便利に使うためのツールや、実際のデータを扱う方法に進みましょう。
Kibanaのインストール
Kibanaは、Elasticsearchのデータを可視化したり、Elasticsearchを操作したりするためのウェブインターフェースです。データの検索、グラフ作成、ダッシュボード構築など、様々な機能を提供します。Elasticsearchを使う上で、Kibanaはほぼ必須と言えるツールです。
KibanaもElasticsearchと同様に、公式サイトからダウンロードできます。
公式サイトからのダウンロードページ:https://www.elastic.co/jp/downloads/kibana
Elasticsearchと同じバージョンのKibanaをダウンロードすることを強く推奨します。インストール方法もElasticsearchと同様に、ZIP/TAR.GZ、DEB/RPM、Homebrew、Dockerイメージなどが提供されています。
- ZIP/TAR.GZ: ダウンロード、解凍し、
bin/kibanaまたはbin\kibana.batを実行します。 - DEB/RPM: Elasticsearchと同様にリポジトリを追加し、
sudo apt install kibanaまたはsudo yum/dnf install kibanaでインストールし、sudo systemctl start kibana.serviceで起動します。 - Homebrew:
brew install kibanaでインストールし、brew services start kibanaで起動します。 - Docker:
docker pull docker.elastic.co/kibana/kibana:8.x.xでイメージを取得し、docker run -d --name kibana -p 5601:5601 --link elasticsearch:elasticsearch docker.elastic.co/kibana/kibana:8.x.xのように実行します(Dockerネットワークや認証の設定が必要です)。
Kibanaのインストール後、設定ファイル (config/kibana.yml または /etc/kibana/kibana.yml など) で、接続先のElasticsearchのURL (elasticsearch.hosts) を設定する必要があります。デフォルトでは ["http://localhost:9200"] となっています。
Kibanaを起動したら、ウェブブラウザで http://localhost:5601 にアクセスします。Elasticsearch 8.x以降でセキュリティが有効になっている場合、Kibanaの初回アクセス時にエンロールメントトークンの入力を求められることがあります。Elasticsearch起動時に取得したトークンを入力してKibanaをElasticsearchに接続します。接続が成功すると、Kibanaの画面が表示され、Elasticsearchを視覚的に操作できるようになります。
データの投入 (Indexing)
Elasticsearchにデータを保存することを「インデクシング (Indexing)」と呼びます。データは「ドキュメント (Document)」という単位で扱われ、複数のドキュメントが集まって「インデックス (Index)」を構成します。リレーショナルデータベースで言うと、インデックスがテーブル、ドキュメントが行のようなイメージです。
KibanaのDev Toolsを使うと、簡単にElasticsearchのAPIを実行してデータを投入したり検索したりできます。
- Kibanaにアクセスし、左側のナビゲーションメニューから「Management」 > 「Dev Tools」を選択します。
- コンソール画面が表示されます。ここでElasticsearchのREST APIコマンドを実行できます。
ドキュメントの追加 (PUT/POST API):
PUT /{index_name}/_doc/{document_id} または POST /{index_name}/_doc でドキュメントを追加できます。
json
PUT /my_first_index/_doc/1
{
"title": "Elasticsearch ダウンロードガイド",
"author": "初心者向け",
"publish_date": "2023-10-27",
"content": "この記事では、Elasticsearchをダウンロードしてインストールする方法を初心者向けに解説します。"
}
この例では、my_first_index という名前のインデックスに、IDが 1 のドキュメントを1件追加しています。
成功すると、以下のようなレスポンスが返ってきます。
json
{
"_index" : "my_first_index",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
データの検索 (GET API):
GET /{index_name}/_search でインデックス内のデータを検索できます。
json
GET /my_first_index/_search
{
"query": {
"match": {
"content": "ダウンロード"
}
}
}
この例では、my_first_index インデックスの中から、content フィールドに “ダウンロード” という単語を含むドキュメントを検索しています。
成功すると、検索にヒットしたドキュメントが hits.hits の中に含まれて返ってきます。
json
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "my_first_index",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"title" : "Elasticsearch ダウンロードガイド",
"author" : "初心者向け",
"publish_date" : "2023-10-27",
"content" : "この記事では、Elasticsearchをダウンロードしてインストールする方法を初心者向けに解説します。"
}
}
]
}
}
このように、KibanaのDev Toolsを使えば、Elasticsearchの基本的な操作(データの追加、検索など)を簡単に行うことができます。
その他の学習リソース
ElasticsearchとKibanaをインストールしたら、次はさらに深く学ぶ段階です。
- 公式ドキュメント: 最も正確で詳細な情報源です。インストール手順はもちろん、設定方法、APIリファレンス、開発ガイドなど、全てが網羅されています。まずはGetting Startedガイドから読み始めるのが良いでしょう。
- Elastic Stack チュートリアル: 公式サイトには、様々な用途(ログ分析、メトリクス監視など)に応じたチュートリアルが用意されています。実際に手を動かしながら学ぶことができます。
- Elasticsearch: The Definitive Guide (無料書籍): 少し古い情報も含まれますが、Elasticsearchの概念や内部構造を学ぶのに役立ちます。
- オンラインコース: Udemy, Coursera, Pluralsightなど、様々なプラットフォームでElasticsearchに関するコースが提供されています。動画で学びたい方におすすめです。
- コミュニティ: Stack OverflowやElasticsearchフォーラムでは、他のユーザーに質問したり、回答を探したりできます。
これらのリソースを活用して、Elasticsearchの機能を探索し、あなたの目的に合わせて活用できるようになりましょう。
まとめ:Elasticsearchの旅は始まったばかり
この記事では、Elasticsearchをあなたのコンピュータにダウンロード・インストールするための具体的な方法を、初心者向けに詳しく解説しました。ZIP/TAR.GZ形式、DEB/RPM形式、Homebrew、Docker、そしてElastic Cloudといった様々な方法があることを知り、それぞれの特徴と手順を理解しました。また、インストール前の準備、インストール後の確認方法、そして一般的なトラブルシューティングについても触れました。
Elasticsearchのインストールは、この強力な検索・分析エンジンの世界への最初のステップです。インストールが完了したら、次はKibanaを使ってデータの投入や検索を試したり、公式ドキュメントやチュートリアルでさらに学習を進めたりすることをお勧めします。
Elasticsearchは非常に多機能で奥深いツールですが、一歩ずつ着実に学んでいけば、きっとあなたのデータ活用の幅を大きく広げてくれるはずです。ログ分析でシステムの健全性を監視したり、ECサイトの検索機能を強化したり、社内文書を全文検索可能にしたりと、Elasticsearchの可能性は無限大です。
この記事が、あなたのElasticsearch学習の素晴らしいスタートとなることを願っています。さあ、Elasticsearchを使ったデータ探索の旅を存分に楽しんでください!
これで、約5000語の詳細なElasticsearchダウンロードガイド記事が完成しました。