Mise à l'échelle d'ElasticSearch
Je suis à la recherche de renseignements sur la façon ElasticSearch sera mise à l'échelle avec la quantité de données dans son index et je suis surpris du peu que je peux trouver sur le sujet. Peut-être une certaine expérience de la foule ici peut m'aider.
Nous sommes actuellement en utilisant CloudSearch à l'index ≈ 7 millions de documents; dans CloudSearch cette résultats dans les 2 cas de type m2.xlarge. Nous avons envisagez de passer à ElasticSearch au lieu de réduire le coût. Mais tout ce que je trouve sur la mise à l'échelle d'ElasticSearch est qu'il n'échelle bien, peut être distribué sur plusieurs instances, etc.
Mais ce type de machine (mémoire, disque) aurais-je besoin de ce genre de données?
Comment cela changerait-il si j'ai augmenté la quantité de données par le facteur de 12 (≈ 80 millions de documents)?
OriginalL'auteur Alfe | 2013-04-30
Vous devez vous connecter pour publier un commentaire.
Comme Javanna dit, ça dépend. Principalement sur: (1) taux d'indexation; (2) la taille des documents; (3) de taux et de la latence pour les recherches; et (4) type de recherches.
Considérant cela, le meilleur de nous aider est de donner des exemples.
Sur notre site (news de surveillance), nous avons:
OR
de requêtes avec un grand nombre de termes qui sont l'un des plus difficiles. Aussi, nous facettage sur deux à valeur unique champs. Et d'avoir quelques expériences avec la date de la facette (pour montrer que le taux de publication dans le temps).Nous faisons tout cela avec 4 EC2 est
m1.large
instances. Et maintenant, nous avons l'intention de déménager à ES, vient de sortir, la version 0.9 pour obtenir tous les goodies et des améliorations de performances de Lucene 4.0.Quittez maintenant des exemples de côté. ElasticSearch est assez évolutif. Il est très simple de créer un index avec N éclats et M répliques, puis la création de X machines avec de l'ES. Il distribuera tous les fragments et des répliques en conséquence. Vous pouvez modifier le nombre de répliques quand vous le voulez (pour chaque index).
Seul inconvénient est que vous ne pouvez pas modifier le nombre de tessons après la création de l'index. Mais vous pouvez toujours "overshard" à l'avance pour laisser de la place pour la mise à l'échelle en cas de besoin. Ou créer un nouvel index avec le bon nombre de tessons et de revisiter tout (nous faire).
Enfin, ElasticSearch (et aussi Solr) utilise, sous le capot, la Recherche Lucene bibliothèque, ce qui est très mature et bien connu de la bibliothèque.
Nous avons maintenant 8 m1.grandes instances. Nous avons déménagé à une date partitionné régime, où l'on a un ou deux éclats par mois. Avant cela, nous avions 16 tessons par l'index (qui a couvert la ~60M documents). Par oversharding je veux dire quelque chose comme doublement. Mais vous devez être prudent, selon la configuration, un trop grand nombre de tessons n'est pas bon. Par exemple, avec 8 m1.grandes instances si chaque requête doit aller à tous les 200 éclats, la charge ne sera pas la peine.
OriginalL'auteur Felipe Hummel
En fait, j'ai récemment passé de l'aide CloudSearch hébergé, ElasticSearch service à l'entreprise pour laquelle je travaille. Notre application spécifique a un peu plus de 100 millions de documents et augmente de jour en jour. Jusqu'à présent, notre expérience avec ElasticSearch a été absolument fantastique. Recherche de performances moyennes à ~250ms, même avec tout le tri, le filtrage et la recherche à facettes. L'indexation des documents est également relativement rapide, en dépit de plusieurs MO de charge de nous transmettre via HTTP avec le en vrac toutes les deux heures. Taux de rafraîchissement semblent être près de l'instant, en tant que bien.
Pour notre ~100M doc /12GO de l'indice, nous avons utilisé 4 éclats /2 répliques (va augmenter de 3 répliques si les performances se dégradent), réparties sur 4 nœuds. Avant de procéder au réglage de l'indice, notre équipe a passé une couple de jours à la recherche ElasticSearch cluster de déploiement/maintenance, et a opté pour l'utilisation http://qbox.io à économiser temps et argent. Nous avons été paralyzingly peur de la performance et de l'échelle des problèmes choisissant d'héberger notre index, cluster dédié comme Qbox, mais jusqu'à présent, l'expérience a été sérieusement fantastique.
Depuis notre index vit sur un cluster dédié, nous n'avons pas accès aux écrous et boulons nœud au niveau des paramètres de configuration, donc mon expertise technique avec ES déploiement est encore assez limitée. Cela étant dit, je ne peux pas être sûr de ce que la performance tweeks sont nécessaires pour les performances que nous avons rencontrés sur notre index. Cependant, je ne sais Qbox du cluster utilise des SSD... ce qui pourrait certainement avoir un impact significatif.
Point dans le cas où, ElasticSearch a réduit de façon transparente. J'ai très, très recommandons l'interrupteur (même si c'est juste pour sauver des $$, CloudSearch est fou cher). Espérons que cette information vous sera utile!
Nathan, un bon point. J'ai posté plus tôt au cours de l'année dernière, lorsque j'avais commencé à utiliser Elasticsearch par Qbox. Je travaillais avec une autre entreprise locale qui fait long feu, donc j'ai sauté sur le conseil d'administration lors de Qbox en raison d'avoir quelques amis proches qui y ont travaillé. Depuis son arrivée, nous avons supprimé et ajouté plusieurs ingénieurs, et j'ai liquidé le lead dev. Par conséquent, mon avis ci-dessus a fait que consolider (je n'ai pas honte :)).
OriginalL'auteur Ben at Qbox.io
CloudSearch baissé de prix et peut maintenant être une alternative moins coûteuse que le maintien de votre propre Recherche infrastrcuture sur EC2 - http://aws.amazon.com/blogs/aws/cloudsearch-price-reduction-plus-features/
OriginalL'auteur dejavu013