Windows と Ubuntu で MongoDB を使用して Elasticsearch をインストールして使用する
- Elasticsearch とは何ですか
- Elasticsearch を Windows 10 にインストールする
- Ubuntu 20.04 に Elasticsearch をインストールする
- MongoDB で Elasticsearch を使用する主な理由
この記事は、Windows および Ubuntu 20.04 での Elasticsearch のステップバイステップのインストールおよび構成ガイドです。また、両方のオペレーティングシステムで MongoDB を使用した Elasticsearch の使用方法も示しています。
Elasticsearch とは何ですか
Elasticsearch は、ログを保存するように設計されたオープンソースのリアルタイム分散分析エンジンである NoSQL データベースです。Elasticsearch は、Java プログラミングと ApacheLucene 上で開発されています。
LinkedIn や OpenStack を含む多くの有名な企業がそれを使用しています。スキーマやテーブルではなく、ドキュメントに基づくフルテキスト検索をサポートします。
また、データの移行、インデックス作成、および同期にも使用されます。Elasticsearch は、アプリケーションで必要な検索操作とフィルターが多すぎる場合に最適です。
Elasticsearch を Windows 10 にインストールする
ステップ 1:Java がインストールされているかどうかを確認する
Elasticsearch を Windows 10 にインストールするには、最新バージョンの Java をマシンにインストールする必要があります。次のコマンドのいずれかを使用して、Java がマシンにすでにインストールされていることを確認することもできます。
Elasticsearch をインストールするには、Java バージョン 7 以降が必要です。
ステップ 2:Elasticsearch .zip
ファイルをダウンロードする
このウェブサイトにアクセスし、次のスクリーンショットのダウンロードリンクをクリックしてください。次に、Elasticsearch を使用するプラットフォームを選択し、.zip
ファイルをダウンロードします。
ステップ 3:Elasticsearch バッチファイルを実行する
.zip
ファイルをダウンロードしたら、それを目的の場所に解凍します。次に、bin
フォルダに移動し、elasticsearch
バッチファイルをダブルクリックします。
これは、舞台裏で実行される手順を含む標準の Windows バッチファイルに他なりません。さらに、次のように表示される Elasticsearch デーモンをマシンに起動するのに役立ちます。
それを開いたままにして、次の手順に従います。
手順 4:認証を無効にする(学習目的でのみ)
デフォルトでは、認証は有効になっています。つまり、ログイン資格情報を入力する必要があります。デフォルトのログイン資格情報を使用するか、このページに従って変更することができます。
この記事では、認証を無効にします(これは学習目的のみですが、実稼働環境で推奨されます)。メモ帳を使用して、%ES_HOME%\config\elasticsearch.yml
パスにある elasticsearch.yml
ファイルを開きます。
ここで、ES_HOME
は Elasticsearch のホームディレクトリです。たとえば、この場合、elasticsearch.yml
は C:\Users\DelftStack\Desktop\elasticsearch-8.2.2-windows-x86_64\elasticsearch-8.2.2\config
にあります。
elasticsearch.yml
ファイルを開いたら、次のスクリーンショットに示すように、xpack.security.enabled
オプションを検索し、その値を false
にします。
Elasticsearch を停止し、elasticsearch.bat
ファイルを実行して再開します。
ステップ 5:ブラウザで Elasticsearch を実行する
お気に入りのブラウザで http://localhost:9200
と入力します。次のスクリーンショットのようなページが表示された場合、Elasticsearch は正常に稼働しています。
Ubuntu 20.04 に Elasticsearch をインストールする
ステップ 1:必要な依存関係をインストールする
パッケージインデックスの更新/アップグレード:
sudo apt update
sudo apt upgrade
Windows OS と同様に、Elasticsearch をインストールするには Ubuntu でも Java が必要です。まだインストールされていない場合は、以下のコマンドを実行して、Ubuntu 20.04 にデフォルトの JDK をインストールします。
sudo apt install openjdk-8-jdk
インストールしたら、java -version
を使用して、そこにあるかどうかを確認します。
また、HTTPS
を介してすべてのリポジトリにアクセスできるようにするには、APT トランスポート
パッケージをインストールする必要があります。
sudo apt install apt-transport-https
ステップ 2:Ubuntu に Elasticsearch をダウンロードしてインストールする
次の仕事は、Elasticsearch リポジトリを追加することです。wget
クエリを使用して公開キーをプルします。
すべてがうまくいけば、出力として OK
が必要です。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
次に、次のコマンドを実行して、リポジトリをシステムに追加します。このチュートリアルを書いている時点でこれが最新バージョンであるため、次のコマンドで 8.x
を書いています。
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
もう一度、以下のコマンドを使用してパッケージインデックスを更新します。
sudo apt update
次のコマンドを実行して、Elasticsearch をインストールします。インストールには時間がかかる場合があります。
だから、それを正常に完了させてください。
sudo apt install elasticsearch
インストール後、Elasticsearch は起動しないため、起動する必要があります。また、マシンを再起動する場合は、Elasticsearch を再実行する必要があります。
この状況を回避するには、以下のコマンドを実行して、システムの再起動後に Elasticsearch を自動的に再ロードします。
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
次に、次のコマンドを使用して、Elasticsearch のステータスを確認します。
sudo systemctl status elasticsearch
ステップ 3:Elasticsearch を構成する
デフォルトでは、Elasticsearch は基本的な使用のために事前設定されています。セットアップで 1つのノードを使用する場合は、構成ファイルを変更する必要はありません。
Elasticsearch 構成を編集する場合は、/etc/elasticsearch
ディレクトリの elasticsearch.yml
ファイルを編集します。ロギングの構成は/var/log/elasticsearch/logging.yml
にもあります。
このチュートリアルの認証を無効にするために、elasticsearch.yml
ファイルを編集しています。xpack.security.enabled
の値を true
から false
に変更します。
elasticsearch.yml
ファイルを編集するときは、次のコマンドを使用してサービスを再起動することを忘れないでください。
sudo systemctl restart elasticsearch.service
次に、次のコマンドを使用して、Elasticsearch が稼働しているかどうかを確認します。
curl localhost:9200
ブラウザで http://localhost:9200
と入力することもできます。これにより、上記の curl
コマンドと同じ結果が表示されます。さらに、この記事をチェックして Elasticsearch を保護することができます。
MongoDB で Elasticsearch を使用する主な理由
MongoDB を使用してデータを保存およびクエリし、Elasticsearch を使用してデータのフルテキストインデックスを作成します。したがって、両方の組み合わせ(インデックス作成用の Elasticsearch と保存用の MongoDB)は、多くの企業が従う一般的なアーキテクチャの 1つです。
Elasticsearch は検索を目的として開発されており、データのインデックス作成のための高度な機能も提供します。データ分析のために Kibana
および Logstash
と一緒に機能します。
Elasticsearch を使用する利点の 1つは、指定されたドキュメント内のすべてのフィールドを高速に検索できることです。これは、個人の Google でデータを検索することと考えることができます。
さまざまなシナリオで Elasticsearch を使用することもできます。たとえば、同期を実行したり、検索エンジン、データ移行、インデックス作成などを構築したりできます。
このチュートリアルでは、同期の目的で MongoDB で Elasticsearch を使用する方法を学習します。
同期の実行に Elasticsearch を使用する
Windows / Ubuntu で Elasticsearch と MongoDB を使用して同期を実行するには、以下の手順に従う必要があります。その前に、すべての依存関係があることを確認してください。
たとえば、このコード例では Node.js
を使用しています。さらに、両方のデータベースエンジン(MongoDB と Elasticsearch)を実行し続けます。
その後、手順に従っていきましょう。
-
mongoose
およびmongoosastic
パッケージをインポートします。 -
MongoDB エンジンとの正常な接続を確立します。
-
MongoDB スキーマを作成します。
-
mongoosastic
プラグインを使用して Elasticsearch に接続します。 -
最初に MongoDB モデルを作成し、次に Elasticsearch マッピングを作成します。
-
MongoDB データベースにデータを追加し、Elasticsearch と同期する必要があります。
サンプルコード(コード全体をファイルに入れ、app.js
ファイルに入れます):
// Step 1:
const mongoose = require('mongoose');
const mongoosastic = require('mongoosastic');
// Step 2:
mongoose.connect('mongodb://localhost:27017/studentdb');
// Step 3:
var StudentSchema =
new mongoose.Schema({firstname: String, lastname: String, city: String});
// Step 4:
StudentSchema.plugin(mongoosastic, {'host': 'localhost', 'port': 9200});
// Step 5:
var Student = mongoose.model('student', StudentSchema);
Student.createMapping((err, mapping) => {
console.log('mapping created');
});
// Step 6:
var newStudent =
new Student({firstname: 'Mehvish', lastname: 'Ashiq', city: 'Lahore'});
newStudent.save((err) => {
if (err) {
console.log(err);
}
console.log('Student is added in both databases');
})
newStudent.on('es-indexed', (err, result) => {
console.log('indexed to elastic search');
});
次に、このコードを実行します。次のようになります。
次のように MongoDB のエントリを確認します。
次に、http://localhost:9200/students/_search
を開いて、Elasticsearch でも確認します。次のスクリーンショットのようになります。