web-dev-qa-db-ja.com

単一クラスター(スタンドアロンクラスター)ElasticSearchの単一ノードの構成方法

ローカルマシンにエラスティック検索をインストールしました。クラスター(スタンドアロンサーバー)で唯一の単一ノードとして構成します。つまり、新しいインデックスを作成するたびに、サーバーでのみ使用可能になります。他のサーバーからはアクセスできません。

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

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

33
channa ly

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

Kimchy:ノードをlocal(true)に設定します。これは、同じJVM内でのみ、ネットワークを使用して他のノードを検出しないことを意味します。

elasticsearch/bin/elasticsearch.ymlファイル内

node.local: true # disable network
57
channa ly

elasticsearch.yml

# 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

コードで同じ構成を使用します。

また、ノードを分離するには、node.local: trueまたはdiscovery.zen.ping.multicast: falseを使用します

24

ElasticSearch 5に関連する情報は次のとおりです。

changelog によると、ES 5でローカルモードを有効にするには、transport.type: localあなたのelasticsearch.yml の代わりに node.local: true

19
Felix Borzik

コードでネットワークトランスポートを使用している場合、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

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

14
sync

シングルNodeでElasticsearchを実行し、パブリックIPにバインドできるようにする場合、2つの重要な設定があります。

network.Host: <PRIVATE IP OF Host>
discovery.type: single-node
8
Chandan

私は自分のコンテナでelasticsearch.ymlを書いたり上書きしたりせずにこれをやりたかった。ここでは、構成ファイルはありません

Elasticsearchを開始する前に環境変数を設定します。

discovery.type=single-node

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

5
John Culviner

これで問題が解決します:

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

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

2
Rohlik

これらはすべて私を助けませんでした(そして悲しいことにbhdrknの答えを読みませんでした)。私にとっては、新しいノードがマルチキャスト経由で自動的に追加されない個別のインスタンスが必要になるたびに、elasticsearchのクラスター名を変更することができました。

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

また、logstashを使用してデータをelasticsearchに入れる場合は、同じクラスター名をoutput-sectionに入れることを忘れないでください:

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

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

1
jonashackt