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

前書き

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

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

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

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

準備 ##

このチュートリアルに従う前に、次のことを行う必要があります。

サーバーをお持ちでない学生は[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs?from=10680)を使用して実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。

特に明記されていない限り、root権限を必要とするこのチュートリアルのすべてのコマンドは、sudo権限を持つ非rootユーザーとして実行する必要があります。

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

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

まず、パッケージインデックスを更新します。

sudo apt-get update

最新のElasticsearchバージョンをダウンロードします。

wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.3.1/elasticsearch-2.3.1.deb

次に、 dpkgを使用して通常のUbuntuの方法でインストールします。

sudo dpkg -i elasticsearch-2.3.1.deb

これにより、Elasticsearchが / usr / share / elasticsearch /にインストールされ、その構成ファイルが / etc / elasticsearchに配置され、そのinitスクリプトが / etc / init.d / elasticsearchに追加されました。

Elasticsearchがサーバーを自動的に起動および停止するようにするには、そのinitスクリプトをデフォルトの実行レベルに追加します。

sudo systemctl enable elasticsearch.service

Elasticsearchを初めて開始する前に、推奨される最小構成情報について次の手順を確認してください。

ステップ2-Elasticsearchを構成する

ElasticsearchとそのJava依存関係がインストールされたので、Elasticsearchを構成します。 Elasticsearch構成ファイルは、 / etc / elasticsearchディレクトリにあります。 2つのファイルがあります:

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

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

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

nanoまたはお気に入りのテキストエディタを使用して、メイン構成ファイル elasticsearch.ymlの編集を開始します。

sudo nano /etc/elasticsearch/elasticsearch.yml

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

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

これらは、Elasticsearchで開始できる最小設定です。ただし、Elasticsearchをより包括的に理解して微調整するために、構成セクションを読み続けることをお勧めします。

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

サーバーの役割が node.masterに設定されていることを確認してください。デフォルトでは、ノードはマスターノードです。 Elasticsearchノードが1つしかない場合は、少なくとも1つのマスターノードが常に必要になるため、このオプションをデフォルトの「true」値のままにしておく必要があります。または、ノードをスレーブノードとして構成する場合は、次に示すように、変数 node.master falseに設定します。

...
node.master:false...

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

同様に、Elasticsearchノードが1つしかない場合は、この値を変更しないでください。それ以外の場合、データをローカルに保存することは禁止されています。次のように、 node.data falseとして指定します。

...
node.data:false...

多くのノードを含む大規模なElasticsearch展開では、他の2つの重要なオプションは index.number_of_shards index.number_of_replicasです。最初のものは、インデックスが分割されるフラグメントまたはフラグメントの数を決定します。 2つ目は、クラスターに分散されるレプリカの数を定義します。シャードを増やすとインデックスのパフォーマンスが向上し、コピーを増やすと検索速度が向上します。

デフォルトでは、シャードの数は5で、レプリカの数は1です。単一のノードでElasticsearchを引き続き調査およびテストしていると仮定すると、1つのシャードから開始することしかできず、レプリカを使用することはできません。したがって、それらの値は次のように設定する必要があります:

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

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

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

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

sudo systemctl start elasticsearch

Elasticsearchを使用する前に、まずElasticsearchをいくつか完了してください。そうしないと、接続障害エラーが発生する可能性があります。

ステップ3-Elasticsearchの保護

デフォルトでは、Elasticsearchにはセキュリティが組み込まれておらず、HTTPAPIにアクセスできるすべてのユーザーが制御できます。 Elasticsearchは、ローカルでのみアクセスできるループバックインターフェイス(つまり、 127.0.0.1)のみをリッスンするため、これはセキュリティ上のリスクではない可能性があります。したがって、すべてのサーバーユーザーが信頼されているか、これが専用のElasticsearchサーバーである限り、パブリックアクセスは不可能であり、Elasticsearchは十分に安全です。

ただし、セキュリティを強化したい場合、最初に行うことは認証を有効にすることです。本人確認は、市販の[シールドプラグイン](https://www.elastic.co/downloads/shield)によって提供されます。このプラグインは無料ではありませんが、テスト用の30日間の無料試用版があります。その公式ページには、優れたインストールと構成の手順があります。知っておく必要があるのは、Elasticsearchプラグインインストールマネージャーのパスが / usr / share / elasticsearch / bin / pluginであることだけです。

商用プラグインを使用したくないが、HTTP APIへのリモートアクセスを許可する必要がある場合は、少なくともUbuntuのデフォルトのファイアウォールUFW(Simple Firewall)を使用して、ネットワークの露出を制限できます。デフォルトでは、UFWはインストールされていますが、有効になっていません。使用する場合は、次の手順に従ってください。

まず、必要なサービスを許可するルールを作成します。サーバーにログインするには、少なくともSSHが必要です。 SSHへのグローバルアクセスを許可するには、ポート22をホワイトリストに登録してください。

sudo ufw allow 22

次に、次に示すように、 TRUSTED_IPなどの信頼できるリモートホストのデフォルトのElasticsearchHTTP APIポート(TCP 9200)へのアクセスを許可します。

sudo ufw allow from TRUSTED_IP to any port 9200

その後、UFWコマンドを有効にします。

sudo ufw enable

最後に、次のコマンドを使用してUFWのステータスを確認します。

sudo ufw status

ルールを正しく指定した場合、出力は次のようになります。

Status: active
​
To                         Action      From
- - - - - - - - - - - - 9200      ALLOW       TRUSTED_IP
22       ALLOW       Anywhere
22( v6)                    ALLOW       Anywhere(v6)

UFWが有効になっていて、Elasticsearchポート9200を保護していることを確認したら、Elasticsearchに外部接続のリッスンを許可できます。これを行うには、構成ファイル elasticsearch.ymlを再度開きます。

sudo nano /etc/elasticsearch/elasticsearch.yml

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

...
network.host:0.0.0.0...

ElasticsearchがすべてのインターフェイスとバインドされたIPをリッスンするように、 0.0.0.0を指定しました。特定のインターフェイスでのみリッスンする場合は、 0.0.0.0の代わりにIPを指定できます。

上記の設定を有効にするには、次のコマンドでElasticsearchを再起動します。

sudo systemctl restart elasticsearch

次に、信頼できるホストからElasticsearchに接続してみます。接続できない場合は、UFWが実行されており、変数 network.hostが正しく指定されていることを確認してください。

ステップ4-Elasticsearchのテスト

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

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

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

{" name":"My First Node","cluster_name":"mycluster1","version":{"number":"2.3.1","build_hash":"bd980929010aef404e7cb0843e61d0665269fc39","build_timestamp":"2016-04-04T12:25:05Z","build_snapshot":false,"lucene_version":"5.5.0"},"tagline":"You Know, for Search"}

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

Elasticsearchをより徹底的にチェックするには、次のコマンドを実行します。

curl -XGET 'http://localhost:9200/_nodes?pretty'

上記のコマンドの出力では、ノード、クラスター、アプリケーションパス、モジュールなどの現在のすべての設定を表示および確認できます。

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

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

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

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

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

{"_ index":"tutorial","_type":"helloworld","_id":"1","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}

cuelを介して、Elasticsearchサーバーに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,"_shards":{"total":2,"successful":1,"failed":0},"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 People!"}}

これまで、Elasticsearchにデータを追加してクエリを実行してきました。

結論として ##

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

Elasticsearch関連のチュートリアルのインストールと構成の詳細については、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。


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

Recommended Posts

Ubuntu16.04にElasticsearchをインストールして構成する方法
Ubuntu16.04にNATSをインストールして構成する方法
Ubuntu18.04にGogsをインストールして構成する方法
CentOS7にElasticsearchをインストールして構成する方法
Ubuntu18.04にCyberpanelをインストールして構成する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu18.04にGitLabをインストールして構成する方法
Ubuntu18.04にAnsibleをインストールして構成する方法
Ubuntu14.04にPostGISをインストールして構成する方法
Ubuntu18.04にVNCをインストールして構成する方法
Ubuntu16.04にSphinxをインストールして構成する方法
Ubuntu14.04にOrientDBをインストールして構成する方法
Ubuntu12.04にAppScaleをインストールして構成する方法
Ubuntu14.04にPostGISをインストールして構成する方法
Ubuntu20.04にElasticsearchをインストールする方法
Ubuntu 16.04 /18.04にPycharmとIpythonをインストールする方法
Ubuntu16.04にphpMyAdminをインストールして保護する方法
Ubuntu20.04にDockerをインストールして使用する方法
CentOS8にVNCをインストールして構成する方法
Ubuntu18.04にCurlをインストールして使用する方法
Ubuntu18.04にWineをインストールして使用する方法
Ubuntu16.04にphpMyAdminをインストールして保護する方法
CentOS8にRedisをインストールして構成する方法
Ubuntu20.04にComposerをインストールして使用する方法
Ubuntu14.04にBaasBoxをインストールして使用する方法
Ubuntu16.04にPostgreSQLをインストールして使用する方法
CentOS6にphpMyAdminをインストールして構成する方法
CentOS8にOwncloudをインストールして構成する方法
Ubuntu16.04にDockerをインストールして使用する方法
CentOS8にRedmineをインストールして構成する方法
Ubuntu20.04にRubyをインストールする方法
Ubuntu20.04にMemcachedをインストールする方法
Ubuntu20.04にJavaをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVirtualBoxをインストールする方法
UbuntuにProtobuf3をインストールするための詳細なチュートリアル
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu16.04にNode.jsをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
UbuntuにMySQLをインストールして構成する
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu16.04にPostgreSQLをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu18.04にAnaconda3をインストールする方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu16.04にJenkinsをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にPython3.8をインストールする方法
Ubuntu18.04にKVMをインストールする方法
Ubuntu20.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu20.04にAnacondaをインストールする方法