J'ai installé la recherche élastique sur mon ordinateur local, je veux le configurer comme seul noeud du cluster (serveur autonome). cela signifie que chaque fois que je crée un nouvel index, il ne sera disponible que sur mon serveur. Il ne sera pas accessible au serveur des autres.
Mon scénario actuel, ces index sont disponibles pour d'autres serveurs (les serveurs sont formés dans un cluster), et ils peuvent apporter des modifications à mes index. Mais je n'en veux pas.
J'ai parcouru d'autres blogs mais je n'ai pas trouvé la meilleure solution. Alors pouvez-vous s'il vous plaît laissez-moi savoir les étapes pour les mêmes?
J'ai eu la réponse de http://elasticsearch-users.115913.n3.nabble.com/How-to-isolate-elastic-search-node-from-other-nodes-td3977389.html .
Kimchy: Vous définissez le nœud sur local (true), cela signifie qu'il ne détectera pas d'autres nœuds utilisant le réseau, mais uniquement au sein de la même machine virtuelle.
dans le fichier elasticsearch/bin/elasticsearch.yml
node.local: true # disable network
Si vous utilisez un transport réseau dans votre code, cela ne fonctionnera pas, car node.local
vous donne un transport local uniquement:
L'astuce consiste alors à définir
discovery.zen.ping.multicast: false
dans votre elasticsearch.yml
, ce qui empêchera votre nœud de rechercher d’autres nœuds.
Je ne suis pas sûr que cela empêche les autres nœuds de découvrir le vôtre; J'avais seulement besoin que cela affecte un groupe de nœuds avec les mêmes paramètres sur le même réseau.
Voici des informations pertinentes pour ElasticSearch 5:
Selon changelog , pour activer le mode local sur ES 5, vous devez ajouter transport.type: local
à votre elasticsearch.yml
au lieu de node.local: true
.
Je voulais faire cela sans avoir à écrire/écraser un elasticsearch.yml dans mon conteneur. Ici c'est sans fichier de configuration
Définissez une variable d'environnement avant de lancer elasticsearch:
discovery.type=single-node
https://www.elastic.co/guide/fr/elasticsearch/reference/current/docker.html
Tout cela ne m'a pas aidé (et malheureusement, je n'ai pas lu la réponse de bhdrkn). Ce qui a bien fonctionné pour moi, c’était de changer le nom du cluster d’elasticsearch à chaque fois que j’avais besoin d’une instance distincte, où les nouveaux noeuds ne sont pas ajoutés automatiquement par le biais de la multidiffusion.
Il suffit de changer cluster.name: {{elasticsearch.clustername}} dans elasticsearch.yml, par exemple. via Ansible. Ceci est particulièrement utile lors de la création d'étapes distinctes telles que Dev, Assurance qualité et Production (qui est un cas d'utilisation standard dans les environnements d'entreprise).
Et si vous utilisez logstash pour obtenir vos données dans elasticsearch, n’oubliez pas de mettre le même nom de cluster dans la section de sortie, comme suit:
output {
elasticsearch {
cluster => "{{ elasticsearch.clustername }}"
}
}
Sinon, votre "logstash - *" - index ne sera pas construit correctement ...
Cela résout votre problème:
PUT /_all/_settings
{"index.number_of_replicas":0}
Testé avec ES version 5.
Si vous avez l'intention d'exécuter Elasticsearch sur un nœud unique et de pouvoir le lier à une adresse IP publique, deux paramètres importants sont les suivants:
network.Host: <PRIVATE IP OF Host>
discovery.type: single-node