Mise à l'échelle de la recherche. Elasticsearch Ses avantages et exigences de base pour l'installation

Bonne après-midi. Je m'appelle Roman Larchikov, je suis ingénieur support technique chez Docsvision. Cet article a été préparé pour ceux qui sont intéressés par les détails techniques de la mise en œuvre de l'échelle de recherche et la familiarité avec le travail d'Elasticsearch. L'article parlera des raisons d'utiliser ES, de la configuration système requise, ainsi que des avantages par rapport à la recherche à partir de MS SQL Server.

Si vous êtes intéressé par des termes plus généraux pour savoir comment nous avons dimensionné la recherche dans la dernière version de notre plate-forme, mes collègues en ont parlé lors du webinaire « Docsvision ECM. Search Scaling ElasticSearch . "

Pourquoi Elasticsearch?


image

Pour commencer, il convient de noter que la version de la plate-forme Docsvision 5.5 est fondamentalement différente des précédentes dans son architecture modulaire. À cet égard, nous devions garantir la possibilité d'une mise à l'échelle presque illimitée du système tout en maintenant la vitesse de travail. En particulier, il était nécessaire de pouvoir dimensionner le service d'indexation à une vitesse élevée de son fonctionnement.

À cet égard, la version de Docsvision 5.5 a introduit la possibilité d'utiliser des bases de données externes (satellites). Désormais, il n'est plus nécessaire de stocker toutes les données dans une seule base de données, qui, avec un travail intensif, augmente quotidiennement en volumes, ce qui complique le processus de maintenance de la base de données, la vitesse de sa récupération lors des plantages et ralentit le fonctionnement global de la base de données elle-même.

image

Utiliser une base de données pour tout est mauvais. La possibilité de transférer des données vers des bases de données externes distinctes implémentées dans Docsvision 5.5 vous permet de restructurer correctement la base de données. Ainsi, si nous parlons de recherche, les données d'indexation peuvent être stockées déjà en dehors de la base de données principale, ce qui élimine l'effet sur sa taille.

La facilité de personnalisation, la flexibilité, la fiabilité, l'évolutivité, la vitesse d'indexation et de recherche en ligne sont tout au sujet d'Elasticsearch.

Elasticsearch est très orienté document. Après l'indexation, nous pouvons rechercher, trier, filtrer les données, plutôt que des lignes de données dans des colonnes. Ce qui, à son tour, illustre une approche différente de la récupération de données et indique qu'Elasticsearch peut effectuer des recherches complexes en texte intégral.

Les documents sont représentés comme des objets JSON. Dans le même temps, la sérialisation (le processus de traduction de toute structure de données en une séquence de bits) JSON est prise en charge par la plupart des langages de programmation et est déjà le format standard pour NoSQL.

1. Présentation d'Elasticsearch


1.1. Ce que c'est?


Elasticsearch est un moteur de recherche plein texte évolutif open source utilisant la bibliothèque Lucene et écrit en Java. La description de tous les avantages de ce moteur est disponible sur le site officiel .

Il est destiné aux recherches complexes dans la base de données de documents / fichiers. Dans la base de données Elasticsearch, les tables sont appelées index et le processus de chargement des documents s'appelle indexation.

Il peut être considéré à la fois comme un référentiel non relationnel de documents au format JSON et un moteur de recherche basé sur la recherche plein texte Lucene. Les clients officiels sont disponibles en Java, NET (C #), Python, Groovy, JavaScript, PHP, Perl, Ruby.

ES est développé par Elastic, ainsi que des projets connexes appelés Elastic Stack - Elasticsearch, Logstash, Beats et Kibana.

Elasticsearch est responsable du stockage et de la recherche des données (ci-après, par souci de concision, nous l'appellerons ES).

1.2. Avantages du moteur de recherche Elasticsearch par rapport au moteur de recherche MS SQL


Docsvision 5.5 a le choix du moteur de recherche avec lequel travailler. Dans cet article, je vais me concentrer sur l'utilisation du moteur de recherche Elasticsearch et parler de ses avantages par rapport à la recherche à partir de MS SQL Server.

Principaux avantages:

  • La capacité du service d'indexation à accéder aux magasins de données externes. Dans le même temps, les données sont correctement indexées et correctement affichées lors de la recherche. Lors de l'utilisation du moteur de recherche SQL Server, il était possible de rechercher uniquement par les données stockées dans la base de données principale.
  • ES est un projet open source, et de nombreuses entreprises mondiales l'utilisent pour rechercher d'énormes ensembles de données.
  • ES , , .
  • (). ES, SQL Server .
  • ES — , .
  • ES (, , ), .
  • , , , .
  • ES . .
  • . , , , , , .
  • , , , , .
  • ES ( ). Docsvision, ES , SQL .
  • — SQL. , , , . , .. , . , , .. . ES .
  • La base de données n'augmente pas en taille lors de l'ajout de langues. Contrairement à ES, lors de l'utilisation de la recherche en texte intégral dans MS SQL, les données indexées augmentent la taille de la base de données principale, en particulier si l'indexation est configurée dans différentes langues, par exemple russe / neutre / anglais. Dans ce cas, la croissance des tables d'indexation augmente déjà plusieurs fois, si une seule langue d'indexation était choisie, par exemple, neutre.

2. Configuration logicielle et système requise pour l'installation d'Elasticsearch


ES peut être déployé non seulement sur des serveurs hautes performances, mais également sur un ordinateur portable. Mais si nous parlons d'un environnement productif, vous devez utiliser un serveur distinct et adhérer à certaines recommandations qui méritent d'être examinées.

2.1. RAM


La ressource la plus critique pour ES est la RAM. Il s'agit de la ressource principale qui se terminera probablement en premier. La taille minimale autorisée est de 8 Go, celle recommandée est de 16 à 64 Go. Plus est autorisé s'il y a vraiment un besoin.

image

Le tri et l'agrégation peuvent consommer une grande quantité de mémoire, il est donc important d'en disposer en quantité suffisante. Une machine avec 64 Go de RAM est une solution idéale, mais les machines avec 32 Go et 16 Go sont également courantes. Si 8 Go ou moins sont installés sur la machine, cela peut conduire à des résultats opposés (au final, vous aurez peut-être besoin de plusieurs de ces "petites" machines). L'utilisation de plus de 64 Go a également ses propres caractéristiques.

2.2. CPU


ES, en règle générale, n'a pas beaucoup d'exigences de processeur, donc son choix est moins important que d'autres ressources.

image

Mais vous devez respecter la règle. Vous devez choisir un processeur moderne avec plusieurs cœurs. En règle générale, les serveurs d'un cluster utilisent des machines de deux à huit cœurs.

Si vous avez le choix entre des processeurs plus rapides ou des processeurs avec plusieurs cœurs, vous devez choisir ce dernier. Le parallélisme supplémentaire offert par plusieurs cœurs donnera un résultat supérieur à une fréquence d'horloge légèrement plus élevée.

2.3. Disque


Le disque est également une ressource importante pour le fonctionnement rapide d'ES. Il est important lors de l'utilisation d'un cluster et est doublement important pour les clusters avec de grands volumes de données indexées.

Les disques sont le sous-système le plus lent du serveur, ce qui signifie que les clusters avec un enregistrement intensif peuvent mettre une charge élevée sur les disques, qui, à leur tour, devient le goulot d'étranglement du serveur. S'il est possible d'utiliser des disques SSD, il est nécessaire de les utiliser, car ils sont de loin supérieurs à tous les supports rotatifs. Les hôtes avec prise en charge SSD ont une augmentation notable des performances de requête et d'indexation.

image

Si vous avez l'intention d'utiliser des disques durs (HDD), il est conseillé d'utiliser des disques de serveur hautes performances (disques avec une vitesse de rotation de 15 000 tr / min).

L'utilisation de RAID 0 est un moyen efficace d'augmenter la vitesse du disque pour les disques en rotation et les SSD. Il n'est pas nécessaire d'utiliser des options RAID avec mise en miroir ou parité, car la haute disponibilité est intégrée à ES via des répliques.

2.4. Planificateur d'E / S


Si vous utilisez des disques SSD, vous devez vous assurer que le planificateur d'E / S du système d'exploitation est correctement configuré. Lorsque des données sont écrites sur le disque, le planificateur d'E / S décide quand ces données sont réellement envoyées sur le disque. Dans la plupart des cas, le planificateur cfq par défaut est utilisé (une file d'attente complètement honnête).

Ce planificateur alloue des intervalles de temps pour chaque processus, puis optimise la livraison de ces différentes files d'attente sur le disque. Il est optimisé pour travailler avec le disque dur: la nature des plaques tournantes signifie qu'il est plus efficace d'écrire des données sur le disque en fonction de l'emplacement physique.

Cependant, cela est inefficace pour les disques SSD, car ils n'utilisent pas de plaques tournantes. Utilisez plutôt une date limite ou noop. Le planificateur d'échéance est optimisé en fonction de la durée d'attente de l'enregistrement, tandis que noop n'est qu'une simple file d'attente FIFO.

Ces modifications simples peuvent améliorer considérablement le débit d'écriture avec le bon planificateur.

2.5. Réseau


Un réseau rapide et fiable est important pour les performances dans un système distribué. Une faible latence garantit que les nœuds peuvent facilement échanger des données, tandis qu'un débit élevé permet de déplacer et de récupérer des données.

Les réseaux de centres de données modernes (1 GbE, 10 GbE) sont suffisants pour la grande majorité des clusters.

Les clusters qui s'étendent sur plusieurs centres de données doivent être évités, même si les centres de données sont situés à proximité. Évitez absolument les clusters qui s'étendent sur de grandes distances géographiques.

Les clusters ES supposent que tous les nœuds sont égaux. Les longs retards ont tendance à exacerber les problèmes des systèmes distribués et à rendre le débogage et la résolution difficiles.

2.6. Recommandations générales


Il vaut la peine de privilégier les machines «moyennes» et «grandes», en évitant les machines peu performantes afin d'éliminer les coûts d'un simple démarrage d'ES. En même temps, les machines vraiment énormes doivent être évitées: elles conduisent souvent à une utilisation déséquilibrée des ressources (par exemple, toute la mémoire est utilisée, mais pas le processeur central) et peuvent ajouter une complexité logistique s'il est nécessaire d'exécuter plusieurs nœuds sur une machine.

3. Conclusion


Après avoir compris ce qu'est Elasticsearch, ses principaux avantages et les exigences d'installation, nous pouvons procéder à l'installation d'ES elle-même pour une configuration supplémentaire dans Docsvision.

Comment l'installer et effectuer la configuration, ainsi que vérifier l'indexation, c'est-à-dire capacité de travail dans Docsvision, lisez la publication de mon collègue ici .

Sujet intéressant? Ensuite, vous pouvez utiliser ce lien et en savoir encore plus! Et ici, vous pouvez vous inscrire aux cours.

All Articles