2013-05-08 18 views
26

私のローカルマシンに弾性検索をインストールしました。クラスタ内の唯一の単一ノード(スタンドアロンサーバ)として構成したいと考えています。新しいインデックスを作成するたびに、それは自分のサーバーでのみ利用可能となります。他のサーバーにアクセスすることはできません。設定方法シングルクラスタ(スタンドアロンクラスタ)のシングルノードElasticSearch

私の現在のシナリオでは、これらのインデックスは他のサーバー(サーバーはクラスタ内に形成されています)で使用でき、インデックスに変更を加えることができます。しかし、私はそれを望んでいません。

私はいくつかの他のブログを見ましたが、最良の解決策を得られませんでした。だから私に同じことを教えてもらえますか?

+2

また、サーバーのクラスター名を変更することもできます。 – bhdrkn

答えて

55

私はhttp://elasticsearch-users.115913.n3.nabble.com/How-to-isolate-elastic-search-node-from-other-nodes-td3977389.htmlから答えを得ました。

Kimchy:ノードをローカル(true)に設定すると、同じJVM内でのみネットワークを使用する他のノードを検出しないことになります。 elasticsearch/binに/ elasticsearch.ymlファイル内

node.local: true # disable network 
+9

これは公式の参照のどこに文書化されていますか? – tuespetre

+4

elasticsearchの "features"の半分のように、文書化されていません。 –

+1

'node.local'は推奨されていません。以下の@ felix-borzikの答えをご覧ください。 – jevonearth

14

あなたのコード内のネットワーク・トランスポートを使用している場合、これは動作しません、node.localだけあなたにLocalTransportを与えるよう:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-transport.html#_local_transport

トリック次いで

discovery.zen.ping.multicast: falseを設定することです

elasticsearch.ymlに追加すると、他のノードを探すノードが停止します。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-zen.html#multicast

私はこれはしかしあなたを発見するから、他のノードを防ぐのかはわかりません。私は、同じネットワーク上の同じ設定を持つノードのグループに影響を与えるだけでした。

+0

ElasticSearch 5では機能しません。 – iceberg

+0

ElasticSearch 5.0以降の[このレスポンス](https://stackoverflow.com/a/45263329/368683)を参照してください。 – user368683

19

# Note, that for development on a local machine, with small indices, it usually 
# makes sense to "disable" the distributed features: 
# 
index.number_of_shards: 1 
index.number_of_replicas: 0 

elasticsearch.ymlでは、あなたのコード内で同じ構成を使用してください。

また、ノードの使用を隔離するためにこれらのdidn'tのnode.local: trueまたはdiscovery.zen.ping.multicast: false

+4

ElasticSearch 5では機能しません。 – Raptor

+0

ElasticSearch 5.0以降の[このレスポンス](https://stackoverflow.com/a/45263329/368683)を参照してください。 – user368683

0

すべてが私を助ける(と私は悲しいことdidn't bhdrknの答えを読んで)。私のために働いたのは、新しいノードがマルチキャスト経由で自動的に追加されない独立したインスタンスを持つ必要があるたびに、elasticsearchのクラスタ名を変更することでした。

elasticsearch.ymlのcluster.name:{{elasticsearch.clustername}}を変更してください。無能な人を介して。これはDev、QA、Production(エンタープライズ環境での標準的な使用法)のような別々のステージを構築する場合に特に役立ちます。 logstashを使用してyou'reがelasticsearchにあなたのデータを取得する場合

そして、ドントは次のように、出力セクションに同じクラスタ名を入れるのを忘れ:

output { 
    elasticsearch { 
     cluster => "{{ elasticsearch.clustername }}" 
    } 
} 

そうでなければ、あなたの「logstash- * "-indexは正しくビルドされません...ここで

6

はElasticSearch 5に関連する情報です:

changelogによると、あなたがあなたの代わりにelasticsearch.ymlnode.local: truetransport.type: localを追加する必要がES 5上のローカルモードを有効にします。

+0

これは投票する必要があります。 – jevonearth

+1

この回答は私のために働いた。古い回答のいくつかは時代遅れかもしれないことに注意してください。 上記の[changelog](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_settings_changes.html#_node_settings)の作業リンクです。 – user368683

関連する問題