Escala de búsqueda. Elasticsearch Sus ventajas y requisitos básicos para la instalación.

Buenas tardes. Mi nombre es Roman Larchikov, soy ingeniero de soporte técnico en Docsvision. Este artículo ha sido preparado para quienes estén interesados ​​en los detalles técnicos de la implementación de la escala de búsqueda y la familiaridad con el trabajo de Elasticsearch. El artículo hablará sobre las razones para usar ES, los requisitos del sistema, así como las ventajas sobre la búsqueda desde MS SQL Server.

Si está interesado en términos más generales para conocer cómo ampliamos la búsqueda en la última versión de nuestra plataforma, mis colegas le informaron sobre esto en el seminario web " Docsvision ECM". Escala de búsqueda ElasticSearch ".

¿Por qué Elasticsearch?


imagen

Para empezar, vale la pena señalar que la versión de la plataforma Docsvision 5.5 es fundamentalmente diferente de las anteriores en su arquitectura modular. En este sentido, necesitábamos asegurar la posibilidad de un escalado casi ilimitado del sistema mientras se mantenía la velocidad del trabajo. En particular, se requería poder escalar el servicio de indexación incluso a una alta velocidad de su operación.

En este sentido, la versión de Docsvision 5.5 introdujo la posibilidad de utilizar bases de datos externas (satélite). Ahora no hay necesidad de almacenar todos los datos en una base de datos, que, con un trabajo intensivo, crece diariamente en volúmenes, lo que complica el proceso de mantenimiento de la base de datos, la velocidad de su recuperación durante los bloqueos y ralentiza el funcionamiento general de la base de datos.

imagen

Usar una base de datos para todo es malo. La capacidad de transferir datos a bases de datos externas separadas implementadas en Docsvision 5.5 le permite reestructurar correctamente la base de datos. Por lo tanto, si hablamos de búsqueda, los datos de indexación pueden almacenarse ya fuera de la base de datos principal, eliminando el efecto en su tamaño.

La facilidad de personalización, la flexibilidad, la fiabilidad, la escalabilidad, la velocidad de indexación y la búsqueda en línea tienen que ver con Elasticsearch.

Elasticsearch está muy orientado a documentos. Después de la indexación, podemos buscar, ordenar, filtrar datos, en lugar de filas de datos en columnas. Lo que, a su vez, demuestra un enfoque diferente para la recuperación de datos e indica que Elasticsearch puede realizar búsquedas complejas de texto completo.

Los documentos se representan como objetos JSON. Al mismo tiempo, la serialización (el proceso de traducir cualquier estructura de datos en una secuencia de bits) JSON es compatible con la mayoría de los lenguajes de programación y ya es el formato estándar para NoSQL.

1. Introduciendo Elasticsearch


1.1. ¿Lo que es?


Elasticsearch es un motor de búsqueda de texto completo escalable de código abierto que utiliza la biblioteca Lucene y está escrito en Java. La descripción de todas las ventajas de este motor está disponible en el sitio web oficial .

Está destinado a búsquedas complejas en la base de datos de documentos / archivos. En la base de datos de Elasticsearch, las tablas se denominan índices y el proceso de carga de documentos se denomina indexación.

Se puede considerar tanto un repositorio no relacional de documentos en formato JSON como un motor de búsqueda basado en la búsqueda de texto completo de Lucene. Los clientes oficiales están disponibles en Java, NET (C #), Python, Groovy, JavaScript, PHP, Perl, Ruby.

ES está siendo desarrollado por Elastic, junto con proyectos relacionados llamados Elastic Stack: Elasticsearch, Logstash, Beats y Kibana.

Elasticsearch es responsable de almacenar y buscar datos (en adelante, por brevedad, lo llamaremos ES).

1.2. Ventajas del motor de búsqueda Elasticsearch en comparación con el motor de búsqueda MS SQL


Docsvision 5.5 tiene la opción de elegir con qué motor de búsqueda trabajar. En este artículo me enfocaré en el uso del motor de búsqueda Elasticsearch y hablaré sobre sus ventajas sobre la búsqueda desde MS SQL Server.

Ventajas principales:

  • La capacidad del servicio de indexación para acceder a almacenes de datos externos. Al mismo tiempo, los datos se indexan y se muestran correctamente durante la búsqueda. Al usar el motor de búsqueda de SQL Server, era posible buscar solo por los datos almacenados en la base de datos principal.
  • ES es un proyecto de código abierto, y muchas compañías globales lo usan para buscar grandes conjuntos de datos.
  • ES , , .
  • (). ES, SQL Server .
  • ES — , .
  • ES (, , ), .
  • , , , .
  • ES . .
  • . , , , , , .
  • , , , , .
  • ES ( ). Docsvision, ES , SQL .
  • — SQL. , , , . , .. , . , , .. . ES .
  • La base de datos no aumenta de tamaño al agregar idiomas. A diferencia de ES, cuando se utiliza la búsqueda de texto completo en MS SQL, los datos indexados aumentan el tamaño de la base de datos principal, especialmente si la indexación está configurada en diferentes idiomas, por ejemplo, ruso / neutral / inglés. En este caso, el crecimiento de las tablas de indexación ya aumenta varias veces, si solo se elige un idioma para la indexación, por ejemplo, neutral.

2. Software requerido y requisitos del sistema para instalar Elasticsearch


ES puede implementarse no solo en servidores de alto rendimiento, sino también en una computadora portátil. Pero si estamos hablando de un entorno productivo, entonces debe usar un servidor separado y cumplir con algunas recomendaciones que vale la pena considerar.

2.1. RAM


El recurso más crítico para ES es la RAM. Este es el recurso principal que probablemente terminará primero. El tamaño mínimo permitido es de 8 Gb, el recomendado es de 16 a 64 Gb. Se permite más si realmente hay una necesidad.

imagen

La clasificación y la agregación pueden consumir una gran cantidad de memoria, por lo que es importante contar con un suministro suficiente. Una máquina con 64 GB de RAM es una solución ideal, pero las máquinas con 32 GB y 16 GB también son comunes. Si se instalan 8 GB o menos en la máquina, esto puede conducir a los resultados opuestos (al final, es posible que necesite varias máquinas "pequeñas"). Usar más de 64 GB también tiene sus propias características.

2.2. UPC


ES, como regla, no tiene muchos requisitos de procesador, por lo que su elección es menos importante que otros recursos.

imagen

Pero debes cumplir con la regla. Debe elegir un procesador moderno con varios núcleos. Por lo general, los servidores en un clúster usan máquinas de dos a ocho núcleos.

Si puede elegir entre procesadores más rápidos o procesadores con múltiples núcleos, debe elegir el último. El paralelismo adicional ofrecido por varios núcleos dará un resultado mayor que una frecuencia de reloj ligeramente más alta.

2.3. Disco


El disco también es un recurso importante para la operación rápida de ES. Es importante cuando se usa un clúster y es doblemente importante para los clústeres con grandes volúmenes de datos indexados.

Los discos son el subsistema más lento del servidor, lo que significa que los clústeres con grabación intensiva pueden generar una gran carga en los discos, lo que, a su vez, se convierte en el cuello de botella del servidor. Si es posible usar unidades de estado sólido, entonces es necesario usarlas, porque son muy superiores a cualquier medio rotativo. Los hosts con soporte SSD tienen un aumento notable tanto en el rendimiento de consultas como de indexación.

imagen

Si tiene la intención de utilizar discos duros (HDD), es recomendable utilizar discos de servidor de alto rendimiento (discos con una velocidad de huso de 15,000 rpm).

El uso de RAID 0 es una forma efectiva de aumentar la velocidad del disco tanto para discos giratorios como para SSD. No es necesario usar opciones RAID con duplicación o paridad, ya que la alta disponibilidad está integrada en ES a través de réplicas.

2.4. Programador de E / S


Si está utilizando unidades de estado sólido, debe asegurarse de que el programador de E / S del sistema operativo esté configurado correctamente. Cuando los datos se escriben en el disco, el planificador de E / S decide cuándo esos datos se envían realmente al disco. En la mayoría de los casos, se utiliza el planificador cfq predeterminado (una cola completamente honesta).

Este planificador asigna intervalos de tiempo para cada proceso y luego optimiza la entrega de estas diversas colas al disco. Está optimizado para trabajar con HDD: la naturaleza de las placas giratorias significa que es más eficiente escribir datos en el disco dependiendo de la ubicación física.

Sin embargo, esto no es efectivo para las unidades de estado sólido, ya que no utilizan placas giratorias. En su lugar, use una fecha límite o noop. El programador de la fecha límite se optimiza dependiendo de cuánto tiempo haya estado esperando la grabación, mientras que noop es solo una simple cola FIFO.

Estos cambios simples pueden mejorar significativamente el rendimiento de escritura con el planificador adecuado.

2.5. Red


Una red rápida y confiable es importante para el rendimiento en un sistema distribuido. La baja latencia asegura que los nodos puedan intercambiar datos fácilmente, mientras que el alto rendimiento ayuda a mover y recuperar datos.

Las redes modernas de centros de datos (1 GbE, 10 GbE) son suficientes para la gran mayoría de los clústeres.

Deben evitarse los clústeres que abarcan varios centros de datos, incluso si los centros de datos se encuentran muy cerca. Definitivamente evite los grupos que abarcan grandes distancias geográficas.

Los clústeres ES suponen que todos los nodos son iguales. Los retrasos prolongados tienden a exacerbar los problemas en los sistemas distribuidos y dificultan la depuración y la resolución.

2.6. Recomendaciones generales


Vale la pena dar preferencia a las máquinas "medianas" y "grandes", evitando las máquinas de bajo rendimiento para eliminar los costos de simplemente iniciar ES. Al mismo tiempo, se deben evitar máquinas realmente enormes: a menudo conducen a un uso desequilibrado de los recursos (por ejemplo, se usa toda la memoria, pero no el procesador central) y pueden agregar complejidad logística si es necesario ejecutar varios nodos en la máquina.

3. Conclusión


Después de descubrir qué es Elasticsearch, sus ventajas clave y los requisitos de instalación, podemos continuar con la instalación de ES para una configuración adicional en Docsvision.

Acerca de cómo instalarlo y realizar la configuración, así como verificar la indexación, es decir capacidad de trabajo en Docsvision, lea la publicación de mi colega aquí .

¿Tema interesante? ¡Entonces puedes usar este enlace y descubrir aún más! Y aquí puedes registrarte para los cursos.

All Articles