CentOS7にElasticsearchをインストールして構成する方法

前書き ##

[ Elasticsearch](http://www.elasticsearch.org/)は、リアルタイムの分散検索およびデータ分析プラットフォームです。その人気は、その使いやすさ、強力な機能、およびスケーラビリティによるものです。

ElasticsearchはRESTful操作をサポートします。これは、HTTPメソッド(GET、POST、PUT、DELETEなど)をHTTP URI(/ collection / entry)と組み合わせて使用してデータを操作できることを意味します。直感的なRESTfulアプローチは、開発者とユーザーの両方に優しいものです。これが、Elasticsearchが人気の理由の1つです。

Elasticsearchは無料のオープンソースソフトウェアであり、その背後には確固たる会社であるElasticがあります。この組み合わせにより、個人テストから企業統合まで、あらゆるものに適しています。

この記事では、Elasticsearchを紹介し、Elasticsearchをインストール、構成、および使用を開始する方法を示します。

コースの準備

このチュートリアルを実行する前に、必ず次の前提条件を完了してください。

ステップ1-Javaをインストールする

ElasticsearchはJavaプログラミング言語で記述されているため、まず、Tencent CVMでJavaランタイム環境(JRE)を使用する必要があります。 JRE用のネイティブCentOSOpenJDKパッケージを使用できます。このJREは無料で、十分にサポートされており、CentOSYumインストールマネージャーによって自動的に管理されます。

次のコマンドを使用して、最新のOpenJDKをインストールできます。

sudo yum install java-1.8.0-openjdk.x86_64

JREがインストールされて使用可能であることを確認するには、次のコマンドを実行します。

java -version

結果は次のようになります。

openjdk version "1.8.0_65"
OpenJDK Runtime Environment(build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM(build 25.65-b01, mixed mode)

Elasticsearchを使用して、より優れたJavaパフォーマンスと互換性を探し始めると、Oracle独自のJava(Oracle JDK 8)をインストールすることを選択できます。

ステップ2-Elasticsearchをダウンロードしてインストールする

Elasticsearchは、zip、tar.gz、deb、またはrpmパッケージを[elastic.co](https://www.elastic.co/downloads/elasticsearch)から直接ダウンロードできます。 CentOSの場合、Elasticsearchの実行に必要なすべてのものをインストールするネイティブrpmパッケージを使用するのが最適です。

執筆時点では、Elasticsearchの最新バージョンは1.7.3です。次のコマンドを使用して、選択したディレクトリにダウンロードします。

wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.3.noarch.rpm

次に、次の rpmコマンドを使用して、通常のCentOSの方法でインストールします。

sudo rpm -ivh elasticsearch-1.7.3.noarch.rpm

その結果、Elasticsearchを / usr / share / elasticsearch /にインストールし、その構成ファイルを / etc / elasticsearchに置き、そのinitスクリプトを / etc / init.d / elasticsearchに追加しました。

ElasticsearchがTencentCVMを使用して自動的に開始および停止するようにするには、次のコマンドを使用して、そのinitスクリプトをデフォルトの実行レベルに追加します。

sudo systemctl enable elasticsearch.service

ステップ3-レジリエンスを構成する

ElasticsearchとそのJava依存関係がインストールされたので、Elasticsearchを構成します。

Elasticsearch構成ファイルは、 / etc / elasticsearchディレクトリにあります。 2つのファイルがあります:

Elasticsearchサーバーでカスタマイズできる最初の変数は、 elasticsearch.yml node.namecluster.nameです。名前が示すように、 node.nameはサーバー(ノード)とそれに関連付けられたクラスターの名前を指定します。

これらの変数をカスタマイズしない場合、 node.nameはTencentCVMホスト名に基づいて自動的に割り当てられます。同時に、 cluster.nameがデフォルトのクラスター名として自動的に設定されます。

Elasticsearchの自動検出機能は、 cluster.name値を使用して、Elasticsearchノードを自動的に検出し、それらをクラスターに関連付けます。したがって、デフォルト値を変更しないと、クラスター内の同じネットワーク上に不要なノードが見つかる可能性があります。

メインの elasticsearch.yml構成ファイルの編集を開始するには:

sudo nano /etc/elasticsearch/elasticsearch.yml

node.name cluster.nameの先頭にある文字 を削除してコメントを解除してから、値を変更します。 / etc / elasticsearch / elasticsearch.ymlファイルでの最初の構成変更は次のようになります。

...
node.name:"My First Node"
cluster.name: mycluster1
...

もう1つの重要な設定は、サーバーの役割です。サーバーの役割は、「マスター」または「スレーブ」にすることができます。 「マスター」は、クラスターの健全性と安定性に責任があります。多数のクラスターノードを使用する大規模な展開では、複数の専用の「マスター」をお勧めします。通常、専用の「マスター」はデータを保存したり、インデックスを作成したりしません。したがって、クラスターの状態を危険にさらす可能性のある過負荷の可能性はありません。

「スレーブ」は「主力」として使用され、データタスクをロードできます。 「スレーブ」ノードが過負荷になった場合でも、追加の負荷を必要とする他のノードがあれば、クラスターの状態に深刻な影響を与えることはありません。

サーバーの役割を決定するために呼び出される設定は、 node.masterと呼ばれます。 Elasticsearchノードが1つしかない場合は、このオプションをコメントアウトして、デフォルト値の「true」に維持する必要があります。つまり、唯一のノードはマスターノードでもある必要があります。または、ノードをスレーブノードとして構成する場合は、 node.master行の先頭にある文字を削除し、値を falseに変更します。

...
node.master:false...

もう1つの重要な構成オプションは、ノードがデータを格納するかどうかを決定する node.dataです。ほとんどの場合、このオプションはデフォルト値( true)のままにしておく必要がありますが、ノードにデータを保存したくない場合が2つあります。 1つは、すでに述べたように、ノードが専用の「マスター」であるということです。もう1つは、ノードがデータの取得とノードからの結果の集計にのみ使用される場合です。後者の場合、ノードは「検索ロードバランサー」として機能します。

同様に、Elasticsearchノードが1つしかない場合は、デフォルトの「true」値を維持するために、この設定をコメントアウトする必要があります。それ以外の場合、データのローカルストレージを無効にするには、次の行のコメントを解除し、値を falseに変更します。

...
node.data:false...

他の2つの重要な選択肢は、 index.number_of_shards index.number_of_replicasです。最初のものは、インデックスがいくつの(シャード)に分割されるかを決定します。 2つ目は、クラスターに分散されるレプリカの数を定義します。シャードを増やすとインデックスのパフォーマンスが向上し、コピーを増やすと検索速度が向上します。

単一のノードでElasticsearchを引き続き調査およびテストしていると仮定すると、コピーではなく1つのシャードから始めるのが最善です。したがって、それらの値は次の値に設定する必要があります(最初の行の「#」を必ず削除してください)。

...
index.number_of_shards:1
index.number_of_replicas:0...

興味があるかもしれない最後の設定は path.dataです、データストレージパスを決定するために設定を変更してください。デフォルトのパスは / var / lib / elasticsearchです。実稼働環境では、Elasticsearchデータを格納するために専用のパーティションとマウントポイントを使用することをお勧めします。最良の場合、この専用パーティションは、パフォーマンスとデータ分離を向上させる別個のストレージメディアになります。 path.data行のコメントを解除し、その値を変更することで、他の path.dataパスを指定できます。

...
path.data:/media/different_media
...

すべての変更を行ったら、ファイルを保存して終了します。これで、次のコマンドを使用して初めてElasticsearchを開始できます。

sudo service elasticsearch start

Elasticsearchを使用する前に、完全に起動するまで少なくとも10秒待ってください。そうしないと、接続障害エラーが発生する可能性があります。

ステップ4-レジリエンスを保護する

Elasticsearchにはセキュリティが組み込まれておらず、HTTPAPIにアクセスできる人なら誰でも制御できます。

最初のセキュリティ調整は、パブリックアクセスを防ぐことです。パブリックアクセスを削除するには、 elasticsearch.ymlファイルを編集します。

sudo nano /etc/elasticsearch/elasticsearch.yml

network.bind_hostを含む行を見つけ、行の先頭にある文字を削除してコメントを解除し、値を localhostに変更すると次のようになります。

...
network.bind_host: localhost
...

警告: Elasticsearchにはセキュリティが組み込まれていないため、制御または信頼できないサーバーからアクセス可能なIPアドレスにこれを設定しないことが非常に重要です。 Elasticsearchをパブリックまたは共有プライベートネットワークのIPアドレスにバインドしないでください。

さらに、セキュリティを強化するために、カスタム式の評価に使用される動的スクリプトを無効にすることができます。カスタムの悪意のある表現を作成することにより、攻撃者は環境に損害を与える可能性があります。

カスタム式を無効にするには、 / etc / elasticsearch / elasticsearch.ymlファイルの最後に次の行を追加します。

...
script.disable_dynamic:true...

上記の変更を有効にするには、次のコマンドを使用してElasticsearchを再起動する必要があります。

sudo service elasticsearch restart

ステップ5-テスト

これまでのところ、Elasticsearchはポート9200で実行されているはずです。以下に示すように、curl、コマンドラインクライアントURL転送ツール、および単純なGETリクエストを使用してテストできます。

curl -X GET 'http://localhost:9200'

次の応答が表示されます。

{" status":200,"name":"CentOS Node","cluster_name":"mysqluster","version":{"number":"1.7.3","build_hash":"05d4530971ef0ea46d0f4fa6ee64dbc8df659682","build_timestamp":"2015-10-15T09:14:17Z","build_snapshot":false,"lucene_version":"4.10.4"},"tagline":"You Know, for Search"}

上記のような応答が表示された場合、Elasticsearchは正常に機能しています。そうでない場合は、インストール手順を正しく実行し、Elasticsearchが完全に起動するのに十分な時間があることを確認してください。

ステップ6-Elasticsearchを使用する

Elasticsearchの使用を開始するには、最初にいくつかのデータを追加します。前述のように、ElasticsearchはRESTful APIを使用します。これは、一般的に使用されるCRUDコマンド(作成、読み取り、更新、および削除)に応答します。それを使用するために、再びカールを使用します。

次のコマンドで最初のエントリを追加できます。

curl -X POST 'http://localhost:9200/tutorial/helloworld/1'-d '{ "message": "Hello World!" }'

次の応答が表示されます。

{"_ index":"tutorial","_type":"helloworld","_id":"1","_version":1,"created":true}

curlを使用して、ElasticseachサーバーにHTTPPOSTリクエストを送信しました。要求されたURIは / tutorial / helloworld / 1です。ここでパラメータを理解することは非常に重要です。

この最初のエントリは、次のようにHTTPGETリクエストを使用して取得できます。

curl -X GET 'http://localhost:9200/tutorial/helloworld/1'

結果は次のようになります。

{"_ index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{"message":"Hello World!"}}

既存のエントリを変更するには、次のようにHTTPPUTリクエストを使用できます。

curl -X PUT 'localhost:9200/tutorial/helloworld/1?pretty'-d '
{" message":"Hello People!"}'

Elasticsearchは、これが成功した変更であることを認める必要があり、次のようになります。

{"_ index":"tutorial","_type":"helloworld","_id":"1","_version":2,"created":false}

上記の例では、最初のエントリの「メッセージ」を「HelloPeople!」に変更しました。このようにして、バージョン番号は自動的に「2」に増加します。

上記のリクエストで追加のパラメータ prettyに気づいたかもしれません。人間が読み取れる形式をサポートしているため、各データフィールドを新しい行に書き込むことができます。以下に示すように、結果を「美化」して、データを取得するときの出力を向上させることもできます。

curl -X GET 'http://localhost:9200/tutorial/helloworld/1?pretty'

これで、応答はより適切な形式になります。

{"_ index":"tutorial","_type":"helloworld","_id":"1","_version":2,"found":true,"_source":{"message":"Hello World!"}}

これまで、Elasticsearchにデータを追加してクエリを実行してきました。その他の操作については、[APIドキュメント](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html)をご確認ください。

結論として ##

これは、Elasticsearchのインストール、構成、および使用の開始が非常に簡単なことです。十分な手動クエリを実行したら、次のタスクはアプリケーションからそれを使用し始めることです。

その他のCentOSチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細をご覧ください。


参照:「CentOS7にElasticsearchをインストールして構成する方法」

Recommended Posts

CentOS7にElasticsearchをインストールして構成する方法
CentOS8にVNCをインストールして構成する方法
Ubuntu16.04にElasticsearchをインストールして構成する方法
CentOS8にRedisをインストールして構成する方法
CentOS6にphpMyAdminをインストールして構成する方法
CentOS8にOwncloudをインストールして構成する方法
CentOS8にRedmineをインストールして構成する方法
CentOS8にElasticsearchをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にNFSサーバーをインストールして構成する方法
CentOS8にPostfixメールサーバーをインストールして構成する方法
Ubuntu16.04にNATSをインストールして構成する方法
Ubuntu18.04にGogsをインストールして構成する方法
CentOS7にDockerをインストールして使用する方法
Ubuntu18.04にCyberpanelをインストールして構成する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu18.04にGitLabをインストールして構成する方法
Ubuntu18.04にAnsibleをインストールして構成する方法
CentOS8にComposerをインストールして使用する方法
Ubuntu14.04にPostGISをインストールして構成する方法
CentOS8にNode.jsとnpmをインストールする方法
Ubuntu18.04にVNCをインストールして構成する方法
Ubuntu16.04にSphinxをインストールして構成する方法
Ubuntu14.04にOrientDBをインストールして構成する方法
centos7.2.1511にjdk1.8.0_151とmysql5.6.38をインストールする方法
CentOS8にCurlをインストールして使用する方法
Ubuntu12.04にAppScaleをインストールして構成する方法
centosにtomcatをインストールおよびアンインストールする方法
Ubuntu14.04にPostGISをインストールして構成する方法
centOS7にjdk1.8をインストールする方法
CentOS8にMySQLをインストールする方法
CentOS8にMemcachedをインストールする方法
CentOS8にRをインストールする方法
Ubuntu20.04にElasticsearchをインストールする方法
CentOS8にFFmpegをインストールする方法
CentOS8にVirtualboxをインストールする方法
CentOS8にTensorFlowをインストールする方法
CentOS8にTeamViewerをインストールする方法
CentOSにPerl5をインストールする方法
CentOS8にGitをインストールする方法
CentOS8にGradleをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にJavaをインストールする方法
CentOS8にGoをインストールする方法
CentOS8にGCCをインストールする方法
CentOS8にYarnをインストールする方法
CentOS8にNginxをインストールする方法
CentOS7にAsteriskをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にVagrantをインストールする方法
CentOS8にPython3.8をインストールする方法
CentOS8にTomcat9をインストールする方法
CentOS8にWebminをインストールする方法
CentOS8にRubyをインストールする方法
CentOS8にSkypeをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にPythonをインストールする方法
CentOS8にPostgresqlをインストールする方法
CentosにWordpressをインストールする方法
CentOS8にhtopをインストールする方法