2017-08-02 8 views
0

Je passais par la recherche élastique et je voulais obtenir une réponse cohérente des clusters ES.Comment la recherche élastique ramène-t-elle un nœud en panne?

Je lis Elasticsearch read and write consistency

https://www.elastic.co/guide/en/elasticsearch/reference/2.4/docs-index_.html

et quelques autres postes et peut conclure que ES succès de retour pour écrire l'opération après avoir terminé écrit à tous les tessons (réplique primaire de +), quel que soit param de cohérence. Faites-moi savoir si ma compréhension est fausse.

Je me demande si quelqu'un sait, comment la recherche élastique ajoute-t-elle un nœud/fragment dans un cluster qui était en panne transitoirement. Est-ce qu'il commencera à servir les demandes de lecture immédiatement après qu'elles seront disponibles ou est-ce qu'il s'assurera qu'il a des données à jour avant de servir les demandes de lecture?

J'ai cherché la réponse à la question ci-dessus, mais n'en ai trouvé aucune.

Merci Gopal

Répondre

0

Si le nœud est supprimé du cluster et il se joint à nouveau, vérifie ElasticSearch si les données sont à jour. Si ce n'est pas le cas, il ne sera pas disponible pour la recherche, jusqu'à ce qu'il soit à nouveau mis à jour (ce qui pourrait signifier que tout le fragment sera à nouveau copié). Le paramètre de cohérence est juste un contrôle supplémentaire de pré-index si le nombre de fragments attendus est disponible dans le cluster (si l'index est configuré pour avoir 4 réplicas, le fragment primaire plus deux réplicas doivent être disponibles, si mis à quorum). Toutefois, ce paramètre ne modifie jamais le comportement qu'une écriture doit être écrite sur tous les fragments disponibles, avant de revenir au client.

+0

Merci, l'information est utile. Mon intention est d'utiliser ES et d'obtenir des données cohérentes. Elastic Search ne garantit pas que les données indexées sont immédiatement disponibles pour la requête. Il a besoin d'une opération de rafraîchissement de la mémoire qui fonctionne en arrière-plan toutes les secondes. Nous avons également la possibilité de faire un rafraîchissement avec chaque opération d'écriture, mais cela a ses propres implications. –

+0

ne pas faire une actualisation après chaque écriture. A cet effet, un paramètre 'refresh = wait_for' a été introduit il y a quelque temps https://www.elastic.co/guide/en/elasticsearch/reference/5.5/docs-refresh.html#docs-refresh – alr