40

エラスティック サーチをローカル マシンにインストールしました。クラスター内の唯一の単一ノード (スタンドアロン サーバー) として構成したいと考えています。これは、新しいインデックスを作成するたびに、自分のサーバーでのみ利用できることを意味します。他のサーバーにはアクセスできません。

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

他のブログをいくつか調べましたが、最善の解決策が得られませんでした。同じ手順を教えてください。

4

9 に答える 9

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

ただし、これにより他のノードがあなたのノードを発見できなくなるかどうかはわかりません。これは、同じネットワーク上の同じ設定を持つノードのグループに影響を与えるためにのみ必要でした。

于 2014-08-15T03:57:51.640 に答える
3

これはあなたの問題を解決します:

PUT /_all/_settings
{"index.number_of_replicas":0}

ES バージョン 5 でテスト済み。

于 2018-06-04T13:30:57.863 に答える
1

これらはすべて役に立ちませんでした (悲しいことに、bhdrkn の回答を読んでいませんでした)。私にとってうまくいったのは、マルチキャストを介して新しいノードが自動的に追加されない別のインスタンスが必要になるたびに、elasticsearch のクラスター名を変更することでした。

たとえば Ansible を介して、elasticsearch.yml の cluster.name: {{ elasticsearch.clustername }} を変更するだけです。これは、Dev、QA、Production (エンタープライズ環境での標準的なユースケース) などの個別のステージを構築する場合に特に役立ちます。

また、logstash を使用してデータを Elasticsearch に取得している場合は、次のように同じクラスター名を出力セクションに入れることを忘れないでください。

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

そうしないと、「logstash-*」インデックスが正しく構築されません...

于 2015-11-05T13:02:53.703 に答える