DockerでElasticsearchをローカルで実行する

本手順は本番環境でのデプロイメントには使用しないでください

このページの手順はローカル開発専用です。これらの手順を本番環境で使用しないでください。なぜなら、セキュリティが確保されていないからです。このアプローチは、実験や学習には便利ですが、本番環境でElasticsearchをこの方法で実行することは決してありません。

ローカル開発またはテストのためにDockerでElasticsearchを迅速にセットアップしたい場合は、このチュートリアルに従ってください。

このチュートリアルにはKibanaのインストール手順も含まれています。KibanaのUIにアクセスする必要がない場合は、その手順をスキップできます。

前提条件

Dockerがインストールされていない場合は、Docker Desktopをダウンロードしてインストールしてください。

環境変数を設定する

次の環境変数を設定します。

  1. export ELASTIC_PASSWORD="<ES_PASSWORD>" # password for "elastic" username
  2. export KIBANA_PASSWORD="<KIB_PASSWORD>" # Used _internally_ by Kibana, must be at least 6 characters long

Dockerネットワークを作成する

ElasticsearchとKibanaの両方を実行するには、Dockerネットワークを作成する必要があります:

  1. docker network create elastic-net

Elasticsearchを実行する

次のコマンドでElasticsearchコンテナを起動します:

  1. docker run -p 127.0.0.1:9200:9200 -d --name elasticsearch --network elastic-net \
  2. -e ELASTIC_PASSWORD=$ELASTIC_PASSWORD \
  3. -e "discovery.type=single-node" \
  4. -e "xpack.security.http.ssl.enabled=false" \
  5. -e "xpack.license.self_generated.type=trial" \
  6. docker.elastic.co/elasticsearch/elasticsearch:8.15.2

Kibanaを実行する(オプション)

Kibanaを実行するには、最初にElasticsearchコンテナ内でkibana_systemパスワードを設定する必要があります。

  1. # ESコンテナ内でKibanaパスワードを設定する
  2. curl -u elastic:$ELASTIC_PASSWORD \
  3. -X POST \
  4. http://localhost:9200/_security/user/kibana_system/_password \
  5. -d '{"password":"'"$KIBANA_PASSWORD"'"}' \
  6. -H 'Content-Type: application/json'

次のコマンドでKibanaコンテナを起動します:

  1. docker run -p 127.0.0.1:5601:5601 -d --name kibana --network elastic-net \
  2. -e ELASTICSEARCH_URL=http://elasticsearch:9200 \
  3. -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
  4. -e ELASTICSEARCH_USERNAME=kibana_system \
  5. -e ELASTICSEARCH_PASSWORD=$KIBANA_PASSWORD \
  6. -e "xpack.security.enabled=false" \
  7. -e "xpack.license.self_generated.type=trial" \
  8. docker.elastic.co/kibana/kibana:8.15.2

Kibanaにアクセスする際は、elasticをユーザー名として使用し、ELASTIC_PASSWORD環境変数に対して以前に設定したパスワードを使用します。

サービスはトライアルライセンスで開始されます。トライアルライセンスは、30日間のトライアル期間中にElasticsearchのすべての機能を有効にします。トライアル期間が終了すると、ライセンスは基本ライセンスにダウングレードされ、これは永遠に無料です。

言語クライアントを使用してElasticsearchに接続する

言語クライアントからElasticsearchクラスターに接続するには、elasticユーザー名と環境変数に設定したパスワードを使用して基本認証を行うことができます。

詳細を表示

次の接続詳細を使用します:

  • Elasticsearchエンドポイント: http://localhost:9200
  • ユーザー名: elastic
  • パスワード: $ELASTIC_PASSWORD(環境変数に設定した値)

例えば、Python elasticsearchクライアントで接続するには:

Python

  1. import os
  2. from elasticsearch import Elasticsearch
  3. username = 'elastic'
  4. password = os.getenv('ELASTIC_PASSWORD') # Value you set in the environment variable
  5. client = Elasticsearch(
  6. "http://localhost:9200",
  7. basic_auth=(username, password)
  8. )
  9. print(client.info())

基本認証を使用したcurlコマンドの例は次のとおりです:

  1. curl -u elastic:$ELASTIC_PASSWORD \
  2. -X PUT \
  3. http://localhost:9200/my-new-index \
  4. -H 'Content-Type: application/json'

次のステップ

私たちのクイックスタートガイドを使用して、Elasticsearchの基本を学んでください。

本番環境への移行

このセットアップは本番使用には適していません。詳細についてはデプロイメントオプションを参照してください。