Artículos de alfabetización de Elasticsearch

1. ¿Qué es la búsqueda?

En el trabajo y el estudio diarios, cuando decimos que queremos encontrar información, podemos pensar inmediatamente en Baidu o Google para buscar. Por ejemplo, busque una película que le guste, un libro que le guste o una noticia interesante. Pero Baidu y Google no son iguales a la búsqueda, son solo las herramientas que usamos cuando buscamos.

Buscar es encontrar la información que buscas en cualquier escena. En este momento, debe ingresar una palabra clave que desea buscar y luego esperar encontrar información relacionada con esta palabra clave.

2. Haz una búsqueda con la base de datos

Para la mayoría de los programadores, todo el mundo sabe que los datos se almacenan en una base de datos. Por ejemplo, información de productos en sitios web de comercio electrónico, información laboral en sitios web de reclutamiento, información de noticias en sitios web de noticias, etc. Por lo tanto, es natural que consideremos usar una base de datos para buscar, como usar una base de datos MySQL para realizar consultas.

Si queremos comprar una camiseta de hombre y buscamos "camiseta de hombre" en la plataforma de compras, ¿cómo sería si usamos directamente palabras clave para buscar de forma borrosa en los datos?

select * from table where pruduct_name like '%男士T恤%'

No consideremos el índice de texto completo de la base de datos. Si la cantidad de productos en China en el sitio web de comercio electrónico es solo 10 millones (de hecho, es mucho más que eso), entonces básicamente se requieren 10 millones de búsquedas, y el nombre del producto debe cargarse cada vez La cadena completa del campo, porque estas consultas difusas son difíciles de optimizar utilizando índices.

Buscar directamente usando la base de datos tiene varios problemas serios:

  1. Tome como ejemplo el campo de descripción del producto, la longitud de su campo puede ser de más de una docena o cientos de caracteres, al realizar la consulta, es necesario escanear todo el texto de cada registro para determinar si el campo contiene la palabra clave especificada por el usuario. .
  2. No hay forma de separar los términos de búsqueda e intentar buscar tantos resultados que cumplan con sus expectativas como sea posible. Por ejemplo, si ingresa "camisetas de hombre", no podrá buscar "camiseta negra de hombre". -camisas".
  3. Al usar una base de datos para buscar, debido a la gran cantidad de datos, el rendimiento de recuperación será muy bajo.

3. ¿Qué es Elasticsearch?

ElasticSearch es un motor de análisis y búsqueda de código abierto muy potente basado en Lucene; es un motor de análisis de búsqueda distribuida en tiempo real que le permite explorar sus datos a una velocidad y escala sin precedentes.

Se utiliza para búsqueda de texto completo , búsqueda estructurada , análisis y combinaciones de estas tres funciones. Además de la búsqueda, en combinación con los productos de código abierto de Kibana, Logstash y Beats, Elastic Stack (ELK para abreviar) también se usa ampliamente en el campo del análisis de big data casi en tiempo real, que incluye: análisis de registros, monitoreo de indicadores , información seguridad , etc Puede ayudarlo a explorar datos masivos estructurados y no estructurados, crear informes visuales a pedido, establecer umbrales de alarma para monitorear datos e identificar automáticamente condiciones anormales mediante el uso de aprendizaje automático .

También hay una pequeña historia sobre el origen de ElasticSearch:

Hace muchos años, un desarrollador recién casado y desempleado llamado Shay Banon siguió a su esposa a Londres, donde ella estudiaba cocina. Mientras buscaba un trabajo lucrativo, comenzó a usar una versión anterior de Lucene para crear un motor de búsqueda de recetas para su esposa.

Usar Lucene directamente es difícil, por lo que Shay se dispuso a crear una capa de abstracción que los desarrolladores de Java puedan usar para agregar fácilmente funciones de búsqueda a sus programas. Lanzó Compass, su primer proyecto de código abierto.

Más tarde, Shay consiguió un trabajo, principalmente una cuadrícula de datos en memoria de alto rendimiento en un entorno distribuido. Esta demanda de motores de búsqueda distribuidos de alto rendimiento y en tiempo real es particularmente prominente. Decidió reescribir Compass, convirtiéndolo en un servicio independiente y lo llamó Elasticsearch.

La primera versión pública se lanzó en febrero de 2010. Desde entonces, Elasticsearch se ha convertido en uno de los proyectos más activos en Github, con más de 300 colaboradores (actualmente 736 colaboradores). Una empresa comenzó a ofrecer servicios comerciales en torno a Elasticsearch y a desarrollar nuevas funciones; sin embargo, Elasticsearch siempre será de código abierto y estará disponible para todos.

Se dice que la esposa de Shay está esperando su motor de búsqueda de recetas...

Acabo de mencionar a Lucene muchas veces, ElasticSearch se basa en Lucene. Pero Lucene es solo una biblioteca. Para aprovechar al máximo sus capacidades, también deberá integrar Lucene en sus propias aplicaciones utilizando Java. Para empeorar las cosas, Lucene es muy complicado y el costo de aprendizaje para los programadores es muy alto. Elasticsearch también está escrito en Java. Usa Lucene para indexar y buscar internamente, pero su propósito es facilitar la búsqueda de texto completo. Al ocultar la complejidad de Lucene, proporciona una API RESTful simple y consistente .

Según la clasificación de DB Engine, ElasticSearch ha sido calificado como el motor de búsqueda de nivel empresarial más popular.

4. Principales funciones y escenarios de aplicación

4.1 Funciones principales

Almacenamiento distribuido y gestión de clústeres de datos masivos

Motor de búsqueda: Baidu, búsqueda de sitios, búsqueda de sistemas de TI

Análisis de datos: sitio web de comercio electrónico, quiénes son los 10 principales vendedores de pasta de dientes en los últimos 7 días; sitio web de noticias, cuáles son las 3 secciones de noticias principales con más visitas en el último mes

Distribuido: ES puede distribuir automáticamente datos masivos a múltiples servidores para almacenamiento y recuperación

Búsqueda de texto completo, búsqueda estructurada, análisis de datos

Búsqueda de texto completo: busque productos cuyos nombres de productos contengan pasta de dientes.

Búsqueda estructurada: Búsqueda de productos clasificados como productos químicos diarios.

Coincidencia parcial, autocompletado, corrección de errores de búsqueda, recomendación de búsqueda

Procesamiento casi en tiempo real de datos masivos

Procesamiento de datos de Hailian: se puede usar una gran cantidad de servidores para almacenar y recuperar datos, y el procesamiento de datos masivos se puede realizar de forma natural

Casi en tiempo real: busque y analice datos en el segundo nivel

4.2 Escenarios de aplicación

  1. Búsqueda de sitios web, búsqueda vertical, búsqueda de código;
  2. Gestión y análisis de registros, seguimiento de indicadores de seguridad, seguimiento del rendimiento de aplicaciones, análisis de opinión pública de rastreo web;

Supongo que te gusta

Origin blog.csdn.net/zzu_seu/article/details/130459500
Recomendado
Clasificación