Подтвердить что ты не робот

Как настроить Single node для одиночного кластера (автономный кластер) ElasticSearch

Я установил эластичный поиск на своей локальной машине, я хочу настроить его как единственный единственный node в кластере (автономный сервер). это означает, что всякий раз, когда я создаю новый индекс, он будет доступен только моему серверу. Он не будет доступен для другого сервера.

В моем текущем сценарии эти индексы доступны для других серверов (серверы формируются в кластере), и они могут вносить какие-либо изменения в мои индексы. Но я не хочу этого.

Я прошел через некоторые другие блоги, но не получил лучшего решения. Так что, пожалуйста, дайте мне знать шаги для этого?

4b9b3361

Ответ 1

Я получил ответ от http://elasticsearch-users.115913.n3.nabble.com/How-to-isolate-elastic-search-node-from-other-nodes-td3977389.html.

Kimchy: вы устанавливаете node на локальный (true), это означает, что он не обнаружит других узлов, использующих сеть, только в пределах одной и той же JVM.

в файле elasticsearch/bin/elasticsearch.yml

node.local: true # disable network

Ответ 2

В 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 используйте node.local: true или discovery.zen.ping.multicast: false

Ответ 3

Если вы используете сетевой транспорт в своем коде, это не сработает, поскольку node.local предоставляет только LocalTransport:

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

Тогда трюк должен установить

discovery.zen.ping.multicast: false

в elasticsearch.yml, который остановит ваш node поиск других узлов.

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

Я не уверен, что это мешает другим узлам обнаруживать ваши; Мне нужно было только это, чтобы повлиять на группу узлов с одинаковыми настройками в той же сети.

Ответ 4

Здесь соответствующая информация для ElasticSearch 5:

В соответствии с changelog, чтобы включить локальный режим на ES 5, вам нужно добавить transport.type: local в elasticsearch.yml вместо node.local: true.

Ответ 5

Все это не помогло мне (и я, к сожалению, не прочитал ответ bhdrkn). Вещь, которая работала для меня, заключалась в том, чтобы менять имя кластера elasticsearch каждый раз, когда мне нужно иметь отдельный экземпляр, где новые узлы автоматически не добавляются через многоадресную рассылку.

Просто измените имя cluster.name: {{elasticsearch.clustername}} в elasticsearch.yml, например. через Ansible. Это особенно полезно при создании отдельных этапов, таких как Dev, QA и Production (что является стандартной средой в корпоративных средах).

И если вы используете logstash для получения данных в elasticsearch, не забудьте поместить одно и то же имя кластера в выходной раздел, например:

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

В противном случае ваш индекс "logstash - *" не будет правильно создан...