Introducción a la búsqueda distribuida de ES

1 motor de búsqueda distribuido convencional

1.1 Lucene

Dirección del sitio web oficial de Lucense : http://lucene.apache.org

Lucene es un conjunto de bibliotecas de código abierto para búsqueda y recuperación de texto completo , respaldado y proporcionado por Apache Software Foundation . Lucene proporciona una interfaz de programa de aplicación simple pero potente que puede realizar búsquedas e índices de texto completo. Lucene es ahora la biblioteca gratuita de recuperación de información de Java más popular.

1.2 Solr

Dirección del sitio web oficial de Solr : https://lucene.apache.org/solr/

Solr (pronunciado "solar") es la plataforma de búsqueda empresarial de código abierto del proyecto Apache Lucene . Sus funciones principales incluyen búsqueda de texto completo , marcado de aciertos [ 1] , búsqueda por facetas , agrupación dinámica, integración de bases de datos y procesamiento de texto enriquecido (como Word , PDF ). Solr es altamente escalable y proporciona búsqueda distribuida y replicación de índices. Solr es el motor de búsqueda empresarial más popular, [ 2] Solr 4 también agrega soporte NoSQL . [ 3]

Solr es un servidor de búsqueda de texto completo independiente escrito en Java y que se ejecuta en un contenedor Servlet (como Apache Tomcat o Jetty ). Solr utiliza el Lucene la biblioteca de búsqueda de Java como el núcleo de la indización de texto y la búsqueda, y tienen similares RESTO del HTTP / XML y JSON 's API . La potente función de configuración externa de Solr permite ajustarlo para adaptarse a muchos tipos de aplicaciones sin necesidad de codificación Java. Solr tiene una arquitectura de complemento para admitir una personalización más avanzada.

Debido a la fusión de los proyectos Apache Lucene y Apache Solr en 2010, los dos proyectos fueron producidos e implementados por el mismo equipo de desarrollo de Apache Software Foundation . Cuando se trata de tecnología o productos, Lucene / Solr o Solr / Lucene es lo mismo.

1.3 Elasticsearch

Dirección del sitio web oficial de ElasticSearch : https://www.elastic.co/cn/elasticsearch/

Elasticsearch es un motor de búsqueda basado en la biblioteca Lucene . Proporciona un motor de búsqueda de texto completo distribuido de múltiples inquilinos con una interfaz web HTTP y documentos JSON sin esquema . Elasticsearch está desarrollado en Java y lanzado como software de código abierto bajo la licencia Apache . El cliente oficial está disponible en Java , .NET ( C # ), PHP , Python , Apache Groovy , Ruby y muchos otros lenguajes. [ 5] Según el ranking de DB-Engines, Elasticsearch es el motor de búsqueda empresarial más popular, seguido de Apache Solr , que también se basa en Lucene. [ 6]

Elasticsearch se desarrolló con un motor de recopilación de datos y análisis de registros llamado Logstash y una plataforma de análisis y visualización llamada Kibana. Estos tres productos están diseñados como una solución integrada denominada "Elastic Stack" (anteriormente denominada "ELK stack").

Elasticsearch se puede utilizar para buscar varios documentos. Proporciona una búsqueda escalable, tiene una búsqueda casi en tiempo real y es compatible con la tenencia múltiple. [ 5] "Elasticsearch está distribuido, lo que significa que el índice se puede dividir en fragmentos, y cada fragmento puede tener 0 o más copias. Cada nodo aloja uno o más fragmentos y actúa como un coordinador para operar Delegar en los fragmentos correctos. Reequilibrio y el enrutamiento se realiza automáticamente ". [ 5] Los datos relevantes generalmente se almacenan en el mismo índice, que consiste en uno o más fragmentos primarios y cero o más fragmentos replicados. Una vez que se crea el índice, no se puede cambiar el número de fragmentos primarios. [ 7]

Elasticsearch utiliza Lucene e intenta proporcionar todas sus funciones a través de JSON y API de Java. Soporta facetado y filtrado [ 8] , lo cual es muy útil para notificar si el nuevo documento coincide con la consulta de registro.

Otra característica se llama "puerta de enlace", que se ocupa de la persistencia a largo plazo del índice; por ejemplo, en el caso de una caída del servidor, el índice se puede restaurar desde la puerta de enlace. [ 9] Elasticsearch admite solicitudes GET en tiempo real, adecuadas para el almacenamiento de datos NoSQL [ 10] , pero carece de transacciones distribuidas. [ 11]

2 Terminología básica de ES

2.1 Terminología básica

Índice

Un índice contiene una gran cantidad de datos de documentos con estructuras de datos similares, como un índice de películas. Un índice contiene muchos documentos y un índice representa un tipo de documentos similares o idénticos.

En términos simples, el índice es relativo a 关系型数据库的库.

Escribe

Tipo, cada índice puede tener uno o más tipos, el tipo es una clasificación lógica de índice, por ejemplo, para crear un índice de películas, las películas se pueden dividir en múltiples tipos: tipo de ciencia ficción, tipo de comedia, tipo mágico, etc. El campo del documento bajo cada tipo puede ser diferente.

El tipo es simplemente relativo a 关系型数据库的表.

Documento

Un documento es la unidad básica de información. Un documento es equivalente a un dato y se puede indexar. El documento se expresa en formato JSON.

El documento es relativo a 关系型数据库的行.

Campo

Campo, un documento consta de varios campos y los campos con el mismo nombre en diferentes tipos de documentos deben tener el mismo tipo.

Cartografía

El mapeo es similar a关系数据库的表结构定义 schema

2.2 Relacionado con el clúster

Casi en tiempo real

Casi en tiempo real, hay dos significados:

  • Hay un pequeño retraso desde que se escriben los datos hasta que se pueden buscar datos (alrededor de 1 s)
  • La búsqueda y el análisis basados ​​en es pueden llegar al segundo nivel

Grupo

Un clúster contiene varios nodos, y el clúster al que pertenece cada nodo está determinado por una configuración. Para aplicaciones pequeñas y medianas, es normal que un clúster tenga un nodo al principio.

Nodo de nodo

El nodo es un nodo del clúster. Cada nodo tiene un nombre único, que se asigna aleatoriamente de forma predeterminada. El nodo predeterminado se unirá a un elasticsearchclúster llamado . Si inicia un grupo de nodos directamente, automáticamente formarán un clúster de búsqueda elástica. Por supuesto, un nodo también puede formar un clúster de búsqueda elástica.

casco

Una sola máquina no puede almacenar una gran cantidad de datos. Es posible dividir los datos de un índice en varios fragmentos y distribuirlos en varios servidores para su almacenamiento. Con un fragmento, puede escalar horizontalmente, almacenar más datos y distribuir las operaciones de búsqueda y análisis a varios servidores para su ejecución, mejorando el rendimiento y el rendimiento. Cada fragmento es un índice de Lucene.

réplica

Cualquier servidor puede fallar o dejar de funcionar en cualquier momento, y el fragmento puede perderse en ese momento. Por lo tanto, se pueden crear múltiples copias de réplica para cada fragmento. La réplica puede proporcionar servicios de copia de seguridad cuando el fragmento no garantiza que no se pierdan los datos. Varias réplicas también pueden mejorar el rendimiento y el rendimiento de las operaciones de búsqueda. Fragmento principal (se establece una vez durante la creación del índice, no se puede modificar, el valor predeterminado es 5), fragmento de réplica (modifica el número en cualquier momento, el valor predeterminado es 1), el valor predeterminado es 10 fragmentos para cada índice, 5 fragmentos primarios, 5 réplicas fragmentos, la configuración disponible de altura más pequeña es de 2 servidores.

Digámoslo de esta manera, los fragmentos se dividen en fragmentos primarios (fragmentos primarios) y fragmentos de réplica (nodos de respaldo). El fragmento primario generalmente se conoce como fragmento y el fragmento de réplica generalmente se conoce como réplica.

3 Índice invertido

datos fuente

ID de documento Contenido del documento
1 elasticsearch es el motor de búsqueda más popular
2 php es el mejor idioma del mundo
3 Cómo nació el motor de búsqueda

Índice invertido

palabra ID de documento Frecuencia de palabra TF: posición POS
búsqueda elástica 1 1: 1: <1>
popular 1 1: 1: <2>
buscador 1,3 1: 1: <3>, 3: 1: <1>
php 2 2: 1: <1>
mundo 2 2: 1: <2>
el mejor 2 2: 1: <3>
Idioma 2 2: 1: <4>
Cómo es 3 3: 1: <2>
Nacido 3 3: 1: <3>

Significado de 1: 1: <3>, 3: 1: <1> :

DocId TF Posición
1 1 3
3 1 1

docId: ID de documento

TF: representa el número de veces que el elemento de segmentación de palabras aparece en el documento en un momento determinado (frecuencia de término)

Posición: la lista de documentos de todos los documentos de una determinada palabra y la información de posición de la palabra en el documento

El índice invertido surge de la necesidad de encontrar registros basados ​​en el valor de los atributos en aplicaciones prácticas. Cada elemento de esta tabla de índice contiene un valor de atributo y cada dirección de registro contiene el valor de atributo. Dado que el atributo no se determina según el registro, sino que la posición del registro se determina según el atributo, se denomina índice invertido.

4 Información relacionada

  • La publicación del blog no es fácil, todos los que han trabajado tan duro para prestar atención y elogios, gracias.

Supongo que te gusta

Origin blog.csdn.net/qq_15769939/article/details/114209338
Recomendado
Clasificación