神戸学院大学 経営学部 林坂ゼミ

Docker 入門トップページ

« 戻る 次へ »

Docker 入門

Elasticsearch で全文検索を実行する(macOS版)

API キーのシェル変数化

これまでに示したコマンドでは curl コマンドの中に API キーを含めていました.この API キーはインストールするたびに異なる値になります.したがって,この Web ページから利用するコマンドをコピーしても毎回 API キーを編集しなければコマンドを実行できないという面倒な部分があります.

ここでは .env ファイルに記載された API キーをシェル変数に読み込んで変数化します.その上で,curl コマンドには API キーの変数名を入力するようにします.これによって,API キーが異なっていてもこの Web ページに記載されたコマンドをそのままコピー&ペーストすれば検索などの様々な処理を実行できるようになります.

まず,次のとおり .env ファイルに API キーが記載されていることを確認します.

.env
START_LOCAL_VERSION=0.12.0
ES_LOCAL_VERSION=9.2.1-arm64
ES_LOCAL_CONTAINER_NAME=es-local-dev
ES_LOCAL_PASSWORD=rs8O0QpW
ES_LOCAL_PORT=9200
ES_LOCAL_URL=http://localhost:${ES_LOCAL_PORT}
ES_LOCAL_DISK_SPACE_REQUIRED=1gb
ES_LOCAL_JAVA_OPTS="-Xms128m -Xmx2g"
KIBANA_LOCAL_CONTAINER_NAME=kibana-local-dev
KIBANA_LOCAL_SETTINGS_CONTAINER_NAME=kibana-local-settings
KIBANA_LOCAL_PORT=5601
KIBANA_LOCAL_PASSWORD=AODa7v3M
KIBANA_ENCRYPTION_KEY=Ew80JRm6PQowvUZHNRjELkX8PLXw96I2
ES_LOCAL_API_KEY=Q25EX3RKb0I3SzJUQjVKNm8xQXQ6OXcxT3phdlhVV1BIeEhVZXh1clJMZw==

この Web サイトからはコマンドをコピーできますが,その後毎回のように API キーを書き換えるのは面倒です.

curl -H "Authorization: ApiKey Q25EX3RKb0I3SzJUQjVKNm8xQXQ6OXcxT3phdlhVV1BIeEhVZXh1clJMZw==" "http://localhost:9200/"

まず,シェル変数 ES_LOCAL_API_KEY などに値がセットされていないことを確認します.なお,シェル変数の詳細はこちらを参照してください.

elastic-start-local % echo ${ES_LOCAL_API_KEY} ⏎

elastic-start-local % echo ${ES_LOCAL_PASSWORD} ⏎

elastic-start-local %

ファイル .env から読み取った値をシェル変数に設定するために次のコマンドを実行します.

elastic-start-local % source .env ⏎
elastic-start-local %

変数に API キーなどが読み込まれたことを確認します.

elastic-start-local % echo ${ES_LOCAL_API_KEY} ⏎
Q25EX3RKb0I3SzJUQjVKNm8xQXQ6OXcxT3phdlhVV1BIeEhVZXh1clJMZw==
elastic-start-local % echo ${ES_LOCAL_PASSWORD} ⏎
rs8O0QpW
elastic-start-local %

API キーをそのまま埋め込むコマンドをもう一度示します.

curl -H "Authorization: ApiKey Q25EX3RKb0I3SzJUQjVKNm8xQXQ6OXcxT3phdlhVV1BIeEhVZXh1clJMZw==" "http://localhost:9200/"

上のコマンドに含まれる API を変数 ${ES_LOCAL_API_KEY} に書き換えたコマンドを示します.

curl -H "Authorization: ApiKey ${ES_LOCAL_API_KEY}" "http://localhost:9200/"

上のコマンドを実行するとこれまでと同様に接続できることが分かりました.

elastic-start-local % curl -H "Authorization: ApiKey ${ES_LOCAL_API_KEY}" "http://localhost:9200/" ⏎
{
  "name" : "64da5c780379",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "__iGUnK-TFq8FlqdBwpWYg",
  "version" : {
    "number" : "9.2.1",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "4ad0ef0e98a2e72fafbd79a19fa5cae2f026117d",
    "build_date" : "2025-11-06T22:07:39.673130621Z",
    "build_snapshot" : false,
    "lucene_version" : "10.3.1",
    "minimum_wire_compatibility_version" : "8.19.0",
    "minimum_index_compatibility_version" : "8.0.0"
  },
  "tagline" : "You Know, for Search"
}
elastic-start-local %

以降の説明では変数を用いたコマンドを利用します.これにより API キーをその都度書き換える必要がなくなり,コマンドをコピー&ペーストするだけで動作するようになります.

目次に戻る