Elasticsearchは、Apache Luceneに基づくオープンソースの検索エンジンであり、HTTPWebインターフェイスとスキーマフリーのJSONドキュメントを備えたリアルタイムの分散型全文検索エンジンを提供します。
ElasticsearchはJavaで開発されています。 ElasticsearchのオープンソースバージョンはApache2.0ライセンスの下でリリースされ、商用バージョンはElasticLicenseの下でリリースされます。現在、ApacheSolrに続く最も人気のあるエンタープライズ検索エンジンです。
この投稿は、ElasticsearchをCentOS 8 /RHEL8にインストールするのに役立ちます。
前提条件
ElasticsearchはJavaを使用して構築されており、パッケージにはOpenJDKのバンドルバージョンが含まれているため、ElasticsearchをインストールするためにJavaを個別にインストールする必要はありません。バンドルされているOpenJDKは、Elasticsearchホームディレクトリ/usr/share/elasticsearchのJDKディレクトリ内にあります。
Javaのインストール
独自のバージョンのJavaを使用するには、LTSバージョンのJavaをインストールし、システムにJAVA_HOME環境変数を設定します。
読む :CentOS 8 /RHEL8にJavaをインストールする方法
システムにインストールされているJavaのバージョンを確認してください。
java -version
出力:
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
以下のコマンドでJAVA_HOMEを設定します。
export JAVA_HOME=<JAVA_PATH>システムにElasticsearchをインストールした後、ElasticsearchがカスタムJavaバージョンを使用できるように/ etc / sysconfig/elasticsearchファイルにJAVA_HOMEを設定します。
Elasticsearchリポジトリのセットアップ
Elasticは、RHELおよびその派生物用にビルド済みのバイナリ(rpm)パッケージを提供しています。 Elasticの公開署名キーをダウンロードしてインストールします。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
無料版
このパッケージは無料で使用できます。オープンソース、無料および有料の商用機能が含まれています。パッケージをインストールすると、基本ライセンスを受け取ります。サブスクリプションページにアクセスして、無料バージョンと商用バージョンに含まれるすべての機能を一覧表示できます。
30日間の試用版を開始して、すべての有料機能を試すことができます。試用期間の終了時に、商用機能は劣化モードで動作します。ライセンスを基本ライセンスに戻すか、試用期間を延長するか、サブスクリプションを購入することができます。
cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
オープンソースバージョン
このパッケージは無料で使用でき、Apache2.0ライセンスで利用できる機能のみが含まれています。
cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Elasticsearchをインストールする
次のコマンドを使用してElasticsearch(v7.x)をインストールします。
無料版
yum install -y elasticsearch
オープンソースバージョン
yum install -y elasticsearch-oss
システムの起動中にElasticsearchが自動起動できるようにします。
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch
Elasticsearchサービスを開始したら、完全に開始するまで少なくとも1分待ちます。そうしないと、テストは失敗します。
Elastisearchは、HTTPリクエストを処理するためにポート9200でリッスンしているはずです。 curlを使用して応答を取得します。
curl -X GET 'http://localhost:9200'
以下のような応答が返されます。
{ "name" : "centos8.itzgeek.local", "cluster_name" : "elasticsearch", "cluster_uuid" : "s6PwCJnoS7e7Pb3QMzkINg", "version" : { "number" : "7.4.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910", "build_date" : "2019-09-27T08:36:48.569419Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Elasticsearchの設定
Elasticsearchの設定ファイルは/etc/elasticsearch/ディレクトリにあります。 Elasticsearch.ymlはElasticsearchのメイン設定ファイルであり、開発クラスターを実行するためのデフォルト設定が含まれています。 Elasticsearchログは/var/ log/elasticsearchディレクトリに保存されます。
クラスター名
設定cluster.nameは、ノードを検出して他のノードと自動結合するために使用されます。同じネットワーク上のElasticsearchノードのグループが同じクラスター名を持っている場合、それらはお互いを検出してクラスターを形成します。
同じネットワーク上の他のノードとの自動参加を回避するために、Elasticsearchノードのデフォルトのクラスター名を変更します。一意のクラスター名を使用していることを確認してください。
Elasticsearch.ymlファイルを編集します。
vi /etc/elasticsearch/elasticsearch.yml
els-clusterをElasticsearchクラスター名に置き換えます。
cluster.name: els-cluster
ノード名
node.nameは、Elasticsearchサーバーのホスト名のようなもので、サービスの起動時に動的に生成されます。以下の行を更新することでノード名を設定できます。 els-cluster-node01をElasticsearchノード名に置き換えます。
node.name: els-cluster-node01
リスニングアドレス
Elasticsearchはローカルホスト(127.0.0.1)にバインドし、デフォルトでポート番号9200でHTTPトラフィックをリッスンします。クラスタ内のノード間の通信にポート番号9300〜9400を使用します。
マルチノードElasticsearchクラスターを形成するか、Elasticsearchノードを本番環境で使用してアプリケーションがElasticsearchノードにアクセスできるようにするには、システムのIPアドレスをリッスンするようにElasticsearchを構成する必要があります。
### Listening on particular IPv4 ### network.host: 192.168.0.10
または
### Listen on All IP Address ### network.host: 0.0.0.0
また、以下の設定をシステムのIPアドレスで更新する必要があります。
discovery.seed_hosts: ["192.168.0.10"]
Elasticsearchサービスを再起動します。
systemctl restart elasticsearch
Elasticsearchサービスを再起動したら、Elasticsearchが完全に開始されるまで少なくとも1分待ちます。
Elasticsearchがnetstatコマンドを使用してすべてのIPアドレスまたは特定のIPアドレスのポート9200でリッスンしているかどうかを確認します。
読む: CentOS 8 /RHEL8でnetstatコマンドが見つかりません
netstat -antup | grep -i 9200
出力:
tcp6 0 0 :::9200 :::* LISTEN 2143/java
カールを使用して、ノード名とクラスター名の両方が正しく設定されていることを確認します。
curl -X GET 'http://192.168.0.10:9200'
以下のような応答が返されます。
{ "name" : "els-cluster-node01", "cluster_name" : "els-cluster", "cluster_uuid" : "s6PwCJnoS7e7Pb3QMzkINg", "version" : { "number" : "7.4.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910", "build_date" : "2019-09-27T08:36:48.569419Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Elasticsearchの操作
Elasticsearchにデータを追加しましょう。 curlコマンドを使用すると、RESTful APIを使用して、ポート9200を介してデータを読み取り、追加、削除し、Elasticsearchに更新できます。
ドキュメントは次の形式で保存されます
Elasticsearch⇒インデックス⇒タイプ⇒ドキュメント⇒フィールド
インデックス: Elasticsearchのデータが保存されている複数のインデックス。
タイプ: 複数のドキュメントが含まれており、データの種類のようなものです。
ドキュメント: データフィールドが含まれています。
フィールド: 実際のデータ。
データの追加
次のcurlコマンドを使用して、Elasticsearchにデータを追加します。
curl -XPUT 'http://localhost:9200/itzgeek/howtos/1' -H 'Content-Type: application/json' -d ' { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" }'
「result」で次の応答が返されるはずです:「created。」
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
どこで、
itzgeek: Elasticsearchクラスターのインデックス。
ハウツー: ドキュメントの種類
1: howtosおよびitzgeekインデックスの下のエントリのID。
データの読み取り
次のコマンドを使用して、Elasticsearchのデータをクエリします。
curl -X GET 'http://localhost:9200/itzgeek/howtos/1'
上記のコマンドに?pretty =trueを追加して、フォーマットされた出力を取得します。
curl -X GET 'http://localhost:9200/itzgeek/howtos/1?pretty=true'
出力は次のようになります。
{ "_index" : "itzgeek", "_type" : "howtos", "_id" : "1", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" } }
データの更新
次のコマンドを使用してデータを更新します。
curl -XPUT 'http://localhost:9200/itzgeek/howtos/1' -H 'Content-Type: application/json' -d ' { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" }'
インデックス、タイプ、およびドキュメントに変更はありません。ただし、フィールドのデータは変更されます。
応答は次のようになり、「_ version」:2と「result」:「updated」が含まれます。これは、ドキュメントが更新されたことを意味します。
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
データの削除
次のコマンドを使用して、ドキュメントを削除します。
curl -X DELETE 'http://localhost:9200/itzgeek/howtos/1'
応答は以下のようになります。ドキュメントが見つかった場合は、「結果」:「削除済み」が表示されます。
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":3,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":2,"_primary_term":1}
ドキュメントが見つからない場合は、「result」:「not_found」が表示されます。
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":4,"result":"not_found","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":3,"_primary_term":1}
結論
CentOS 8 / RHEL 8にElasticsearchをインストールし、Elasticsearchでデータを追加、読み取り、削除、更新する方法を学んだことを願っています。マルチノードのElasticsearchクラスターをセットアップして、大量のデータを処理することもできます。