Gluegent Blog

Gluegent Blog

Elasticsearchのローカル環境構築

  • 技術
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.usernameとelasticsearch.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でササっと環境構築して動くのは良いですね。

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

(土屋)