Para muchas aplicaciones y sitios web, que obviamente no están diseñados sólo para representar a su empresa, la función de búsqueda es una de las herramientas más importantes. La búsqueda puede ser una herramienta primordial para la interacción con el cliente porque es una fuente de conocimiento de lo que sus usuarios buscan en su sitio o aplicación. Al analizar las búsquedas de los usuarios, puede mejorar la usabilidad, ofrecer una funcionalidad más relevante para atraer a nuevos usuarios y mantener a los existentes. En cuanto a los usuarios, les gusta la búsqueda por al menos dos razones:
- No necesitan hacer un gran esfuerzo para encontrar algo. Por ejemplo, si su sitio web es bastante grande y un usuario necesita hacer muchos clics para llegar al contenido deseado, esto lo alejaría rápidamente de su uso.
- Es un salvavidas para los usuarios, que no son capaces de entender la interfaz de usuario de su solución y se quedan atascados en la navegación. En la mayoría de los casos, esto también ocurre cuando se tiene una solución grande con mucho contenido, pestañas, navegación, etc.
La funcionalidad de búsqueda puede representarse como una pequeña entrada en la página, pero esta pequeña cosa puede mejorar la usabilidad de su sitio, aumentar el número de clientes y ayudar a su negocio, que es el objetivo principal después de todo. Por eso la eficacia es una de las características clave de la búsqueda. No importa que su búsqueda sea útil y potente si el usuario espera mucho tiempo o el nivel de relevancia es demasiado bajo, esto producirá una impresión equivocada
Obviamente, es difícil encontrar una solución única para todos. Con una amplia gama de funciones, diferentes precios y mucho más para comparar, cada servicio es una buena opción en función de sus necesidades. En la primera parte del artículo, tratamos de revisar y comparar dos servicios de búsqueda muy populares: Microsoft (MS) Azure Search y Elasticsearch (ES). En la segunda parte, revisamos Azure Search en la práctica.
Visión general de Microsoft Azure Search
Azure Search es una sólida solución de búsqueda como servicio en la nube desarrollada por Microsoft Corporation. Su lanzamiento tuvo lugar en 2013, cuando Microsoft anunció las nuevas características de Azure, entre ellas la nueva Azure Search. Una de las potentes capacidades de Azure Search es el uso de capacidades de inteligencia artificial para extraer texto y características de archivos de imágenes, o entidades y frases clave de texto sin procesar. La funcionalidad se expone mediante la ayuda de llamadas a la API común o al SDK de .NET (lo que también facilita el trabajo con la búsqueda y enmascara la complejidad de la recuperación de información).
Azure Search ofrece muchas funciones, como sugerencias de búsqueda, navegación facetada, filtros, resaltado de aciertos, ordenación, paginación, etc. He aquí un breve resumen de las mismas:
- Búsqueda de texto completo y análisis de texto, el caso de uso básico. La sintaxis de las consultas proporciona el conjunto de operadores, como los lógicos, los de búsqueda de frases, los de sufijo y los de precedencia, y también incluye las búsquedas difusas y de proximidad, el refuerzo de términos y las expresiones regulares.
- Búsqueda cognitiva, esta funcionalidad está en modo de vista previa (tenga en cuenta que esta información es válida en el momento de escribir el artículo). Ha sido diseñada para permitir el análisis de imágenes y texto, que puede aplicarse a una tubería de indexación para extraer información de texto del contenido en bruto con la ayuda de algoritmos impulsados por la IA.
- En cuanto a laintegración de datos, Azure Search ofrece la posibilidad de utilizar indexadores para rastrear automáticamente Azure SQL Database, Azure Cosmos DB o Azure Blob storage en busca de contenido susceptible de búsqueda. Los indexadores de Azure Blob pueden realizar una búsqueda de texto en los documentos (incluyendo documentos de Microsoft Office, PDF y HTML).
- Análisis lingüístico, puede utilizar analizadores léxicos personalizados y analizadores lingüísticos de Lucene o Microsoft para realizar consultas de búsqueda complejas mediante coincidencias fonéticas y expresiones regulares o para la manipulación (como el género, los sustantivos plurales irregulares, la ruptura de palabras, etc.).
- Geo-búsqueda, funcionalidad para buscar información por ubicaciones geográficas u ordenar los resultados de la búsqueda en función de su proximidad a una ubicación física que puede ser beneficiosa para los usuarios finales.
- Características de laexperiencia del usuario, incluye todo lo que facilita la interacción del usuario con la funcionalidad de búsqueda: autocompletado (vista previa), sugerencias de búsqueda, asociación de términos equivalentes por sinónimos, navegación facetada (que puede utilizarse como el código detrás de una lista de categorías o para el filtrado autodirigido), resaltado de aciertos, clasificación, paginación y estrangulamiento de resultados.
- Relevancia, cuyo beneficio clave es la puntuación de los perfiles para modelar la relevancia de los valores en los documentos. Por ejemplo, puede utilizarla si desea mostrar las vacantes más calientes en los resultados de la búsqueda.
Azure Search también proporciona herramientas tan útiles como el análisis del tráfico de búsqueda, el registro de métricas sobre consultas por segundo, por latencia y el estrangulamiento. A través del portal de Azure también puede supervisar fácilmente sus analíticas, recuentos de índices y documentos, gestionar la capacidad y mucho más. La plataforma de alta disponibilidad garantiza una experiencia de servicio de búsqueda extremadamente fiable, ofreciendo un SLA del 99,9%
Visión general de Elasticsearch
Elasticsearch se emplea para una gran cantidad de casos de uso diferentes, que se revisarán brevemente más adelante en este párrafo. Fue fundado en 2012 por Shay Banon y la idea principal era crear una solución de búsqueda escalable, que entonces sustituyó a Compass, un precursor de Elasticsearch. Así pues, repasemos un poco en qué consiste Elasticsearch
Elasticsearch es una base de datos orientada a documentos diseñada para almacenar, recuperar y gestionar datos orientados a documentos o semiestructurados. Puede utilizarse para buscar todo tipo de documentos y proporciona una búsqueda escalable y admite la multitarea. Elasticsearch proporciona acceso a toda la funcionalidad a través de una interfaz REST, por lo que, almacena los datos en documentos JSON, y luego, los consulta para su recuperación. Elasticsearch también es sin esquema, utilizando algunos valores predeterminados para indexar los datos. Las principales características de Elasticsearch son:
- Búsqueda textual, este es el caso de uso más común, y principalmente Elasticsearch se utiliza cuando hay mucho texto, y el objetivo es encontrar cualquier dato para la mejor coincidencia con una frase específica.
- La búsquedade texto y de datos estructurados permite buscar el producto por sus propiedades y su nombre.
- Agregación de datos, como se menciona en la documentación oficial, el marco de la agregación ayuda a proporcionar datos agregados basados en una consulta de búsqueda. Se basa en simples bloques de construcción llamados agregaciones, que pueden componerse para construir complejos resúmenes de los datos. Hay muchos tipos diferentes de agregaciones, cada una con su propio propósito y salida
- Elalmacenamiento de documentos JSON representa un objeto JSON con algunos datos, que es la unidad básica de información en Elasticsearch que puede ser indexada.
- Geo Search proporciona la capacidad de combinar la geo y la búsqueda. Esta funcionalidad se está convirtiendo poco a poco en algo imprescindible para cualquier sitio web de contenidos.
- Autosugerencia es también una de las funciones muy populares hoy en día, que permite al usuario recibir consultas sugeridas a medida que escribe.
- Autocompletar es una de las funciones muy útiles, que autocompleta el campo de búsqueda sobre las palabras parcialmente escritas, basándose en las búsquedas anteriores.
Elasticsearch no es nuevo y tiene muchas funciones comunes con Azure Search (lo cual es bastante lógico, ya que ambos proporcionan facilidades de búsqueda), pero está evolucionando rápidamente y trabajando en un número cada vez mayor de funciones. El objetivo principal de estos dos servicios es claro y consistente y está dirigido a permitir lograr un rendimiento más rápido con resultados de búsqueda para su motor de búsqueda. Intentemos compararlos por algunas de sus características.
Azure Search vs Elasticsearch
El proceso de selección es un proceso realmente individual que depende de muchos factores, principalmente de sus objetivos y proyecto. Más adelante en el artículo, vamos a comparar Azure Search y Elasticsearch de manera general, lo que cubrirá la funcionalidad principal y las propiedades comunes. De todos modos, sólo tiene que tener en cuenta que al comparar no sólo debe explorar su lista de características y su precio, sino entender que la solución seleccionada debe ajustarse a sus estándares y necesidades del proyecto. También puede ser una buena idea pensar un poco en sus planes futuros. Por ejemplo, al principio del trabajo en su aplicación o servicio, quiere tener una versión del sitio sólo en inglés, pero sabe con seguridad que, algún tiempo después, planea la integración multilingüe, por lo que debe estar seguro de que la plataforma seleccionada se ajustará siempre a sus necesidades. A veces, es difícil elegir la opción más cara de inmediato, cuando su proyecto es todavía pequeño, pero esto le ahorrará en el futuro la migración a otra plataforma.
Idiomas soportados
Las aplicaciones multilingües no son raras y a veces tienen requisitos específicos para los idiomas soportados (por ejemplo, se requiere el soporte de un idioma específico). La siguiente tabla muestra la lista de idiomas soportados para ambos servicios. Tenga en cuenta que esta lista es válida en el momento de redactar el artículo y se ha obtenido de los sitios web oficiales.
Idioma | ||
---|---|---|
Árabe | ||
Armenio | ||
Bangla | ||
Vasco | ||
Bengalí | ||
Brasileño | ||
Búlgaro | ||
Catalán | ||
Chino | ||
Croata | ||
Checo | ||
Danés | ||
Holandés | ||
Inglés | ||
Estonio | ||
Finlandés | ||
Francés | ||
Gallego | ||
Alemán | ||
Griego | ||
Gujarati | ||
Hebreo | ||
Hindi | ||
Húngaro | ||
Islandés | ||
Indonesio | ||
Irlandés | ||
Italiano | ||
Japonés | ||
Kannada | ||
Coreano | ||
Letón | ||
Lituano | ||
Malayalam | ||
Malayo (latín) | ||
Marathi | ||
Noruego | ||
Persa | ||
Polaco | ||
Portugués | ||
Punjabi | ||
Rumano | ||
Ruso | ||
Serbio | ||
Eslovaco | ||
Esloveno | ||
Sorani | ||
Español | ||
Sueco | ||
Tamil | ||
Telugu | ||
Tailandés | ||
Turco | ||
Ucraniano | ||
Urdu | ||
Vietnamita |
Precio
El precio es siempre algo bastante difícil de comparar. Estos dos servicios tienen diferentes tipos de pago y diferentes planes. En la tabla siguiente hemos intentado mostrar la comparación teniendo en cuenta las cuestiones más populares sobre el pago, como los tipos de pago (mensual, anual, etc.), los periodos de prueba, etc
Nivel gratuito | ||
Pago mensual | ||
Pago único | ||
Suscripción anual | ||
Precio inicial (por hora) | $0.101 | Depende de la configuración seleccionada |
Periodo de prueba | No es necesario debido a la disponibilidad del nivel gratuito | 14 días |
Si revisa la tabla con atención, mencionará que algunos puntos no tienen respuestas claras. Por ejemplo, Elasticsearch no proporciona el precio exacto para cada configuración, porque permite configurar la infraestructura: el tamaño de la implementación, la elección del proveedor de la nube (AWS o GCP), el número de zonas de disponibilidad y el tipo de implementación, que tienen un gran impacto en el precio. Azure Search no tiene un periodo de prueba, pero tiene un nivel gratuito, cuyo uso no está limitado en el tiempo. Por eso, al comparar el precio, debe pensar qué se adapta mejor a su solución y qué planes tiene en el punto de partida (utilizar el plan gratuito o el periodo de prueba, configurarlo todo usted mismo o utilizar los planes configurados, etc.).
Tipos de datos soportados
Los tipos de datos soportados pueden ser también una cuestión delicada cuando investigue las oportunidades de cada servicio. A continuación en la tabla mostramos los tipos soportados por Azure Search y Elasticsearch con algunas notas adicionales. Tenga en cuenta que algunos de los tipos de datos pueden ser sustituidos por otros, así que revise la tabla cuidadosamente.
cadena | ||
Colección (Cadena) | Una lista de cadenas que pueden ser opcionalmente tokenizadas para la búsqueda de texto completo. El límite recomendado es de 16 MB. | Elasticsearch dispone de tipos de datos separados para almacenar matrices. |
booleano | ||
entero | valores enteros de 32 bits (Int32) y valores enteros de 64 bits (Int64) | |
largo | ||
corto | ||
byte | ||
binario | ||
doble | ||
float | ||
medio_flota | ||
scale_float | ||
fecha | Valores de fecha y hora representados en el formato OData V4. | |
Punto geográfico | ||
geo_shape para formas complejas como los polígonos | Azure Search tiene en realidad el tipo GeographyPolygon, que es un polígono que representa una región geográfica en el globo. Este tipo no puede utilizarse en los campos del documento, pero sí como argumento. | |
Tipos de datos de rango | integer_range, float_range, long_range, double_range, date_range | |
Tipos de datos complejos | array, objeto, anidado | |
Tipo de datos IP | ||
Finalización | La búsqueda en Azure tiene una | para proporcionar |
tipo de datos | para esta función | sugerencias de autocompletar |
Tipo de datos de recuento de fichas | para contar el número de tokens en una cadena | |
mapeador-murmullo3 | para calcular los hashes de los valores en tiempo de índice y almacenarlos en el índice | |
mapper-annotated-text | para indexar texto que contenga marcas especiales (normalmente utilizadas para identificar entidades con nombre) | |
Tipo de percolador | acepta consultas del query-dsl | |
tipo de datos join | define la relación padre/hijo para los documentos dentro del mismo índice | |
Tipo de datos Alias | define un alias de un campo existente. |
Interfaces de programación
Las interfaces de programación soportadas pueden ser una de las principales dependencias. En este párrafo, no compararemos estos servicios en una tabla, sino que proporcionaremos una lista de interfaces disponibles para cada uno de ellos. Las siguientes interfaces de programación están disponibles para Azure Search:
- REST – Comandos HTTP compatibles con cualquier plataforma y lenguaje de programación, lo que hace que esta interfaz sea universal.
- .NET SDK – Envoltura .NET para las ofertas de la API REST disponible para los lenguajes de código gestionado que se dirigen a .NET Framework.
- Bibliotecas Azure Search para Python, que se proporcionan a través de Azure SDK para Python.
Elasticsearch tiene una lista más amplia de clientes soportados, y también una lista de clientes aportados por la comunidad, pero en este artículo, vamos a revisar sólo los clientes oficiales, que se enumeran a continuación:
- Cliente REST de Java.
- API de Java.
- API de JavaScript.
- API Groovy.
- aPI DE .NET.
- API PHP.
- API de Perl.
- API de Python.
- API de Ruby.
A pesar de tener un soporte más amplio, Azure Search proporciona la API REST, que también la hace disponible para una lista más amplia de lenguajes.
Importación de fuentes de datos
Ambos servicios permiten importar datos de diferentes fuentes. A veces es muy útil, especialmente cuando se tiene un proyecto existente y se necesita trasladar los datos al índice. Azure Search admite la siguiente lista de fuentes de datos:
- Fuente de datos existente. Puede seleccionar los indexadores existentes definidos en su servicio de búsqueda.
- Base de datos Azure SQL.
- SQL Server en Azure VM.
- Azure Cosmos DB.
- Azure Blob Storage.
- Azure Table Storage.
A través del importador de Java Database Connection (JDBC) puede obtener datos de fuentes JDBC para indexarlos en Elasticsearch. Soporta las siguientes fuentes:
- PostgreSQL.
- MS SQL Server.
- MySQL.
- Exportación desde archivos CSV.
Además, ambos servicios permiten empujar al índice cualquier conjunto de datos compuesto por documentos JSON.
Resumen
En este artículo, hemos comparado algunos parámetros bastante comunes para mostrar algunas diferencias entre los servicios. A pesar de todos los artículos y comparaciones, debe recordar que no debe limitarse a lo que digan los expertos a la hora de elegir la solución que crea que va a funcionar mejor para su equipo. Se trata de un proceso individual y, a veces, la elección correcta varía en función de las preferencias específicas, los procesos de trabajo y las necesidades de su empresa. Por ello, esperamos que haya encontrado algo relevante para sus necesidades y se acerque a tomar una decisión informada o, al menos, a encontrar algo nuevo para usted. Para aquellos, que después de leer este artículo se interesaron por Azure Search, puede ser interesante ver la segunda parte del artículo, donde proporcionaremos algunos ejemplos de su uso.
Acerca de Redwerk
El equipo de Redwerk lleva en el mercado desde 2005. A lo largo de los años, nuestro dedicado equipo de desarrollo ha realizado más de 250 proyectos para clientes de todo el mundo. Disponemos de una cartera creíble de casos prácticos sobre los servicios de externalización que hemos prestado, que demuestra nuestra experiencia en diversas tecnologías e industrias. Además, la mayoría de los clientes colaboran con nosotros a largo plazo gracias al servicio de externalización de TI de alta calidad que ofrecemos. Nuestro equipo está siempre al día con las tendencias y garantiza el mejor resultado para cada proyecto que tratamos.