Qu'est-ce que l'idéal en bloc de la taille de la formule dans ElasticSearch?
Je crois qu'il devrait être une formule pour calculer en vrac indexation de taille dans ElasticSearch. Probablement suivants sont les variables de cette formule.
- Nombre de nœuds
- Nombre de tessons de/index
- De la taille du Document
- RAM
- Vitesse d'écriture sur disque
- Vitesse LAN
Je me demande Si quelqu'un sait ou l'utilisation d'une formule mathématique. Si non, comment les gens décider de leur gros? Par essais et erreurs?
OriginalL'auteur shyos | 2013-08-28
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de règle d'or pour cette. Extrait de la doc:
J'ai l'habitude d'utiliser un bloc de taille entre 1K et 5K docs.
OriginalL'auteur moliware
J'ai tiré cette information à partir de l'API Java est BulkProcessor classe. La valeur par défaut est 1000 actions ou 5 mo, il vous permet aussi de définir un intervalle de vidage, mais ce n'est pas définie par défaut. Je suis juste en utilisant les paramètres par défaut.
Je suggérerais à l'aide de BulkProcessor si vous utilisez l'API Java.
Il est très conservateur. Cependant, vous ne pouvez pas déterminer l'idéal paramètres w/o des tests avec des données réelles sur le cluster. Ces jours-ci (5 ans plus tard), nous avons un beaucoup plus grand et plus puissant cluster à l'aide de BEAUCOUP plus grandes tailles de lots en mo sans document de limite.
OriginalL'auteur hudsonb
J'étais à la recherche à ce sujet et j'ai trouvé votre question 🙂
j'ai trouvé cet élastique la documentation
.. donc je vais enquêter sur la taille de mes documents.
OriginalL'auteur HADEEL
Lire ES en vrac doc attentivement: https://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-performance.html#_using_and_sizing_bulk_requests
OriginalL'auteur Christophe Roussy
Je n'ai pas trouvé de meilleur moyen que de l'essai et de l'erreur (c'est à dire le traditionnel processus d'ingénierie), comme il y a beaucoup de facteurs au-delà de matériel influençant la vitesse d'indexation: la structure et de la complexité de votre index (mappings, les filtres ou les analyseurs), types de données, si votre charge de travail d'e/S ou en CPU, et donc sur.
En tout cas, pour démontrer comment la variable, il peut être, je peux partager mon expérience, car il semble différent de la plupart posté ici:
Élastique 5.6 avec 10 go de segment en cours d'exécution sur un seul vServer avec 16 GO de RAM, 4 vCPU et un SSD dont la moyenne est de 150 MO/s lors de la recherche.
Je peux réussir à indexer des documents de follement de différentes tailles via le protocole http et en vrac (curl), en utilisant une taille de lot de 10k documents (20k lignes, la taille des fichiers entre 25 MO et 79MB), chaque lot prenant ~90 secondes. index.intervalle_actualisation est définie sur -1 lors de l'indexation, mais c'est la seule "mise au point" je l'ai fait, toutes les autres configurations sont par défaut. Je suppose que c'est surtout dû au fait que l'indice lui-même n'est pas trop complexe.
Le vServer est à environ 50% de CPU, SSD en moyenne à 40 MO/s et 4 go de RAM de libre, donc je pourrais probablement le faire plus rapidement par l'envoi de deux fichiers en parallèle (j'ai tout simplement essayé de l'augmentation de la taille des lots de 50%, mais commencé à recevoir des erreurs), mais après ce point, il a probablement fait plus de sens que de considérer une API différente ou tout simplement de répartir la charge sur un cluster.
OriginalL'auteur jmng