Elasticsearchのローカル環境構築

 こんにちは。新卒二年目エンジニアの土屋です。

以前の私の記事ではElasticsearchのJava API Clientの使用方法をご紹介しましたが、今回はElasticsearch環境をローカルで立ち上げる方法をブログにしてみました!

概要

タイトルはElasticsearchのローカル環境構築としましたが、Elasticsearchのみでは環境構築後、色々と管理や操作が面倒なのでKibanaの立ち上げまで今回は説明していきます。

Kibanaとは

Elasticsearchのデータ可視化やElasticsearch等のElastic Stackの制御がGUI上で行えるものです。インデックス等の一覧の表示や管理が可能であり、実際にElasticsearchのAPIを叩くこともできます。

環境

今回は下記の環境でElasticsearchとKibanaの環境構築をしました。

使用PC

  • OS:Windows 10 Pro

  • 実装メモリ(RAM):16.0GB

  • システム:64 ビット オペレーティング システム、x64 ベース プロセッサ

バージョン等

  • Elasticsearch : 8.10.1

  • Kibana : 8.10.1

  • Java 8

1. Javaのインストール

ElasticsearchはJavaで開発されているため、動かすにはJavaのインストールが必須となります。環境変数のJAVA_HOMEからJavaを呼ぶため、こちらの設定も必要になります。今回は詳細なJavaのインストール方法に関しては省略します。

2. Elasticsearchのダウンロードと起動

まずは、公式のダウンロードページからElasticsearchをダウンロードしてください。zipファイルがダウンロードされますので、解凍しておきましょう。

解凍したら以下の様なディレクトリ構成となっているはずです。

今回はデフォルトの設定で起動するため、後はbin\elasticsearch.batを実行するだけでElasticsearchが立ち上がります。非常に簡単ですね!

(起動前にconfig\elasticsearch.ymlを変更することでポート番号や各種設定を変更できます。)

3. Elasticsearchの起動確認

デフォルトのHTTPポートは9200となっているので、起動を確認するために以下のコマンドを叩いてみましょう。

curl localhost:9200?pretty

このままだと以下のようなレスポンスが返って来ると思います。

{

  "error" : {

    "root_cause" : [

      {

        "type" : "security_exception",

        "reason" : "missing authentication credentials for REST request [/?pretty]",        

        "header" : {

          "WWW-Authenticate" : [

            "Basic realm=\"security\" charset=\"UTF-8\"",

            "ApiKey"

          ]

        }

      }

    ],

    "type" : "security_exception",

    "reason" : "missing authentication credentials for REST request [/?pretty]",

    "header" : {

      "WWW-Authenticate" : [

        "Basic realm=\"security\" charset=\"UTF-8\"",

        "ApiKey"

      ]

    }

  },

  "status" : 401

}

認証情報がないと怒られてはいますが、Elasticsearch自体は起動していることが分かると思います。

4. Elasticsearchの接続確認

Elasticsearchの起動は確認できましたが、このままでは認証ができずElasticsearchを使用できないため、ビルドインユーザーを使って再度接続します。

ビルドインユーザーのパスワードはbin/elasticsearch-setup-passwords.batを実行することで設定できます。色々なビルドインユーザーのパスワードの設定をそれぞれで求められますが今回は全て同じ「pswd」に設定しました。ここではビルドインユーザー[elastic]を指定してcurlを実行します。

curl -u elastic:pswd localhost:9200?pretty

今度はエラーが無くclusterやバージョン等の情報が返ってくることが確認できました。

{

  "name" : "sample-name",

  "cluster_name" : "elasticsearch",

  "cluster_uuid" : "DL1Aa3_Wwxxx4AkqSP86ng",

  "version" : {

    "number" : "8.10.0",

    "build_flavor" : "default",

    "build_type" : "zip",

    "build_hash" : "e123da45c67890dfdc204971e600343b0aa78b0b",

    "build_date" : "2023-09-07T08:16:21.960703010Z",

    "build_snapshot" : false,

    "lucene_version" : "9.7.0",

    "minimum_wire_compatibility_version" : "7.17.0",

    "minimum_index_compatibility_version" : "7.0.0"

  },

  "tagline" : "You Know, for Search"

}

これでElasticseachが使えるようになりました。このままindexの操作や検索も可能ですし、ビルドインユーザを使って一般ユーザを作成することもできます。

5. Kibanaのダウンロードと起動

Elasticsearch同様、公式のダウンロードページからzipファイルをダウンロードして解凍します。


Kibanaが先ほど起動したElasticsearchに接続できるようにconfig\kibana.ymlのElasticsearchの設定欄のelasticsearch.usernameelasticsearch.passwordに「kibana」と「paswd」を指定します。ここではビルドインユーザー[elastic]と権限が異なるビルドインユーザー[kibana]を使用します。

今回はビルドインユーザーを指定しましたが、サービスアカウントトークンを発行し、elasticsearch.serviceAccountTokenの設定でもElasticsearchに接続可能です。

では設定が完了したのでbin/kibana.batを実行してKibanaを起動します。(こちらもその他設定はデフォルトのまま)

デフォルトのHTTPポートは5601となっているのでブラウザでhttp://localhost:5601/を開いてみてください。


ログイン画面が出てくるので、とりあえずビルドインユーザー[elastic]を使ってログインします。

以下のような画面が表示されKibanaが問題なく使えるようになりました!


まとめ

今回はElasticsearchとKibanaのローカルでの環境構築方法をご紹介しました。実際にElasticsearchを運用するのはElastic Cloud等クラウド環境を使用するケースが多いかと思いますが、開発環境としてローカルPCでササっと環境構築して動くのは良いですね。

最後まで読んで頂きありがとうございました

(土屋)