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でササっと環境構築して動くのは良いですね。
最後まで読んで頂きありがとうございました。
(土屋)