Indexar la web es difícil. Hay un suministro casi infinito de sitios que se comportan mal, estándares mal aplicados (o ignorados), contenido duplicado y casos de esquina con los que lidiar. Es una gran tarea crear un rastreador web fácil de usar que sea lo suficientemente completo y flexible para dar cuenta de todos los diferentes contenidos que encuentra. En el espíritu de nuestras raíces de código abierto, queríamos compartir un poco sobre nuestro enfoque de estos desafíos a medida que creamos este nuevo y poderoso mecanismo de ingestión para Elastic Enterprise Search .
Un poco de historia y desafíos de indexación que hemos aprendido a lo largo del camino
Hemos recorrido un largo camino desde que creamos la primera iteración de nuestro rastreador web hace unos ocho años (para el producto Swiftype Site Search: Swiftype y Elastic unieron fuerzas en 2017). Una versión renovada de ese rastreador web ha estado en producción en swiftype.com durante los últimos cinco años, y ahora maneja más de mil millones de páginas web por mes. Ahora estamos usando toda esa experiencia operando a escala para agregar un poderoso mecanismo de ingestión de contenido para la solución Elastic Enterprise Search. Este nuevo rastreador web escalable y fácil de usar permitirá a nuestros usuarios indexar contenido de cualquier fuente externa, mejorando aún más la imagen de ingestión de contenido para Elastic Enterprise Search.
Los siguientes son solo algunos de los desafíos interesantes que hemos encontrado, algunos obvios, otros no tanto, mientras trabajamos en lo que parece una simple tarea de indexar un montón de páginas HTML en un índice de búsqueda.
Deduplicar contenido
Uno de los problemas clave para un rastreador web es el rango de expectativas del usuario con respecto al proceso de eliminación de copias duplicadas de datos.
Por un lado, hay usuarios que siguen las mejores prácticas en cuanto a presentación de contenido y estructura de URL. No tienen ningún contenido duplicado y, cuando es necesario, se basan en URL canónicas, reglas de robots.txt y redireccionamientos para ayudar a los rastreadores web a manejar correctamente sus sitios. Esos sitios tienden a funcionar con cualquier software de rastreo web listo para usar.
Por otro lado, hay sitios que abusan de los estándares y no siguen las mejores prácticas. Algunos sistemas de gestión de contenido grandes y populares y herramientas de software de alojamiento de foros son especialmente problemáticos. Por razones desconocidas, abusan de las reglas de formato de contenido y URL hasta el punto en que un sitio pequeño podría generar fácilmente millones (!!!) de páginas aparentemente únicas. Las organizaciones que utilizan esas herramientas tienden a requerir una potente deduplicación de contenido y una funcionalidad de filtrado de URL.
Para permitir una gama tan amplia de diferentes estructuras de sitios web y expectativas hacia la calidad de la funcionalidad de deduplicación de contenido, hemos desarrollado un conjunto de características que permiten a los usuarios controlar qué contenido se indexa y cómo quieren definir la singularidad del contenido. Nuestro nuevo rastreador web tendrá una poderosa capacidad para especificar las reglas para identificar páginas únicas y garantizará que las páginas duplicadas se traten correctamente para cada caso de uso.
Identificar contenido
¿Qué deberíamos usar para identificar de forma única un fragmento de contenido en un sitio web? Parece una pregunta trivial. La mayoría de las personas (y los organismos de Internet que crean estándares) tienden a estar de acuerdo en que una URL es un identificador único de una página web. Desafortunadamente, la complicada realidad de Internet en acción rompe esta suposición con bastante rapidez. Por ejemplo:
Queremos asegurarnos de que nuestro rastreador web cubra la gama más amplia de posibles escenarios de movimiento y actualización de contenido. Utilizará técnicas sofisticadas de hash de contenido y URL para mantener el contenido del índice de búsqueda incluso cuando el contenido y las URL se actualicen en presencia de múltiples copias duplicadas de los datos.
Hacer frente al incumplimiento de las normas
Desafortunadamente, Internet es en última instancia una colección casi ilimitada de páginas HTML rotas e implementaciones de protocolos HTTP y servidores web defectuosos. Cualquier rastreador web que valga su peso debe tener en cuenta una variedad de elementos rotos, como algunos de estos ejemplos memorables que hemos encontrado:
document.write
(¡y ningún otro JavaScript en la página!)La experiencia de solucionar problemas y trabajar con cientos de casos como estos a lo largo de los años nos ha llevado a crear un conjunto de mecanismos defensivos y funciones de análisis de contenido. Estas características permitirán al rastreador web manejar casi cualquier tipo de contenido siempre que sea accesible a través de HTTP.
Gestión de ciclos de vida de rastreo
A lo largo de los años de rastreo de contenido de clientes, nos hemos dado cuenta de que es casi imposible predecir la duración del rastreo de un sitio web determinado. Incluso para sitios pequeños y simples, tuvimos casos en los que un rastreo demoraría muchos meses y debía detenerse manualmente. Con frecuencia, una combinación aleatoria de problemas con el sitio conduce a una explosión de URL de sitios únicos debido a un error en la implementación de protocolos estándar.
Estos son algunos de los "grandes éxitos" que hemos encontrado y que nos han provocado problemas en el ciclo de vida del rastreo:
Como resultado de tal complejidad, definir claramente un rastreo terminado es complicado. Nuestro nuevo rastreador web incluirá una serie de heurísticas integradas, lo que le permitirá manejar una amplia gama de situaciones en las que los sitios web tardan mucho en indexarse. Se incluirán límites de longitud y profundidad de URL, límites de duración de rastreo, compatibilidad con la deduplicación basada en contenido y una serie de reglas que se centran en el contenido clave al tiempo que permiten ignorar las páginas rotas con enlaces profundos.
Añadiendo observabilidad
Un aspecto importante de cualquier operación de rastreo es comprender qué sucedió, qué decisiones tomó el sistema y por qué. El objetivo es ver cómo se descubrió cada página, se extrajo del servidor web, se analizó e introdujo en un motor o, cuando se produjeron problemas, qué falló y por qué.
Dado que el nuevo rastreador web se basa en Elasticsearch (la plataforma más popular para la indexación y el análisis de datos de registro en el mundo), hemos tomado una decisión desde el principio para crear la mayor cantidad de observabilidad posible en el sistema. Cada acción y decisión del rastreador web se captura e indexa en Elasticsearch. Los registros utilizan un formato de registro estructurado estándar de Elastic Common Schema para permitir una correlación más sencilla entre los diferentes registros y un análisis muy detallado de los eventos. Todos los eventos indexados están disponibles para su análisis utilizando todas las potentes capacidades de Kibana y se documentarán desde el primer día.
Que sigue
Esté atento a los anuncios y actualizaciones de productos relacionados con el rastreador web.
Si desea obtener más información sobre el rastreador web, consulte la presentación de Sprinting to a crawl de nuestro reciente evento virtual ElasticON Global (junto con docenas de otras presentaciones en todas las soluciones Elastic). Y, como siempre, puede agregar experiencias de búsqueda a su lugar de trabajo, sitios web y aplicaciones con Elastic Enterprise Search, con una prueba gratuita de Elastic Cloud por 14 días (o una descarga gratuita ).