Java - "Preguntas de la entrevista - ElasticSearch"

Preámbulo

Java - "Preguntas de la entrevista - Conceptos básicos"

Java - "Preguntas de la entrevista - JVM"

Java——"Preguntas de la entrevista: subprocesamiento múltiple y simultaneidad"

Java - "Preguntas de la entrevista - Primavera"

Java——"Preguntas de la entrevista——SpringBoot"

Java: "Preguntas de la entrevista: MySQL"

Java - "Preguntas de la entrevista - Spring Cloud"

Java - "Preguntas de la entrevista - Dobbo"

Java - "Preguntas de la entrevista - Nginx"

 Java - "Preguntas de la entrevista - MQ"

 Java - "Preguntas de la entrevista - Linux"

Java——"Preguntas de la entrevista——Guardián del zoológico"

Java - "Preguntas de la entrevista - Redis"

Java - "Preguntas de la entrevista - Capítulos distribuidos"

 Java - "Preguntas de la entrevista - Artículos de la red"

Java - "Preguntas de la entrevista - Patrones de diseño"

Java - "Preguntas de la entrevista - Maven"

Java - "Preguntas de la entrevista - ElasticSearch"

Java——"Preguntas de la entrevista——tomcat"​​​​​​

Java - "Preguntas de la entrevista - Git"

Java - "Preguntas de la entrevista - Soft Power"

Este directorio de artículos

1. Hable sobre el principio de segmentación de palabras y el índice invertido

2. Habla sobre la idea del almacenamiento segmentado

3. Hable sobre su comprensión del pensamiento estratégico de las fusiones de segmentos

4. ¿Conoces la similitud de texto TF-IDF?

5. ¿Puede hablar sobre la lógica de los índices de escritura de ElasticSearch?

6. ¿Está familiarizado con el proceso de búsqueda de datos en el clúster de ElasticSearch?

7. ¿Entiende el problema y la solución del paso de página profundo de ElasticSearch?

8. Familiarizado con la optimización del rendimiento de ElasticSearch

9. ¿Cuáles son los métodos de optimización de consultas de ElasticSearch?

10. ¿Cómo implementa elasticsearch la elección maestra?

11. ¿Qué debo hacer si hay demasiados datos de índice en elasticsearch, cómo ajustar e implementar?

12. Cuénteme sobre la arquitectura de clúster de los es de su empresa, el tamaño de los datos del índice y cuántos fragmentos hay.

13. ¿Qué es Elastic Search?

14. ¿Qué son los clústeres, nodos, índices, documentos y tipos en ElasticSearch?

15. ¿Qué es la fragmentación en ElasticSearch?

16. ¿Qué es una réplica en ElasticSearch?

17. ¿Qué es un analizador en ElasticSearch?

18. ¿Qué es un compilador en ElasticSearch?

19. ¿Qué es un filtro en ElasticSearch?

20. ¿Cuál es el propósito de habilitar atributos, indexación y almacenamiento?


1. Hable sobre el principio de segmentación de palabras y el índice invertido

En primer lugar, la segmentación de palabras es para la recuperación.

  • Inglés: Una palabra a la vez, muy simple. Soy estudiante, las palabras están separadas por espacios.
  • Chino: soy estudiante, así que no puedo dividirlo palabra por palabra, soy estudiante. Esta es una buena puntuación. También los hay ambiguos, tranquilizar a los usuarios, usar-usuarios y hacer-usuarios. Es fácil de ver para un ser humano, pero mucho más difícil para una máquina. Por lo tanto, hay varios tokenizadores en el mercado, uno que enfatiza la eficiencia y el otro que enfatiza la precisión.

 Índice invertido: el índice invertido es para la fila delantera.

1. La primera fila es que recuerdo que tengo un documento en mi computadora, que habla sobre el resumen de problemas comunes de ES. Luego encontré el documento, volteé la página de arriba a abajo y encontré la parte de ES. Encuentre el contenido del documento a través del documento.

2. Inversión: un archivo txt ES FAQ -> D:/Resumen de problemas distribuidos.doc.

Entonces, la inversión es encontrar el documento por el contenido del documento. Por supuesto, el contenido no es todo, de lo contrario no hay necesidad de buscar documentos, el contenido es solo unos pocos participios. El txt aquí es el motor de búsqueda.

2. Habla sobre la idea del almacenamiento segmentado

Lucene es un conocido software de código abierto de búsqueda, que se utiliza en la parte inferior de ElasticSearch y Solr.

El almacenamiento segmentado es la idea de Lucene.

Al principio, se creaba un gran índice invertido para todo el documento. Simple y rápido, pero los problemas vienen con él.

Hay un pequeño cambio en el documento y es necesario reconstruir todo el índice, lo cual es lento y costoso. Para mejorar la velocidad, las actualizaciones periódicas darán como resultado una puntualidad deficiente.

Ahora un archivo de índice, dividido en múltiples subarchivos, cada subarchivo es un segmento. No es necesario procesar los segmentos que no se vean afectados por los datos modificados.

 3. Hable sobre su comprensión del pensamiento estratégico de las fusiones de segmentos

La idea de la segmentación mejora en gran medida la eficiencia del mantenimiento del índice. Pero luego surgen nuevos problemas.

Cada vez que se agregan nuevos datos, se agrega un nuevo segmento Con el tiempo, un documento corresponde a una gran cantidad de segmentos. Si hay demasiados segmentos, afectará el rendimiento de recuperación.

Proceso de recuperación:

  1. Consultar todos los datos a corto plazo que cumplan las condiciones 
  2. Combinar el conjunto de resultados para cada segmento

Por lo tanto, es necesario racionalizar el segmento de forma regular. Es realmente la tendencia general del mundo, la división a largo plazo debe combinarse y la división a largo plazo debe dividirse.

Estrategia: Organice y agrupe los segmentos por tamaño, y los que sean demasiado grandes no participarán en la fusión. Fusiones de pequeños grupos. El conjunto se mantiene dentro de un rango de tamaño razonable. Por supuesto, el tamaño que debe tener es configurable por el usuario. Esto también está en línea con la idea de diseño.

4. ¿Conoces la similitud de texto TF-IDF?

En pocas palabras, busca una palabra y hay demasiadas páginas web para coincidir con los artículos. Por ejemplo, 1000, cómo se deben presentar estos contenidos, cuáles al frente y cuáles al reverso. Esto también debe tener una puntuación en el grado de coincidencia.

TF-IDF es para esto.

TF = Frecuencia del término Frecuencia del término, con qué frecuencia aparece un término en este documento. Cuanto mayor es el valor, más coincide el documento, un indicador positivo.

IDF = Frecuencia de documento inversa Frecuencia de documento inversa, en pocas palabras, una palabra aparece en todos los documentos, por lo que la palabra no es importante. Por ejemplo, las palabras "的, 了, 我, 好" aparecen en todos los documentos y no ayudan a recuperarlos. Indicador de marcha atrás.

TF-FDI = TF / FDI

5. ¿Puede hablar sobre la lógica de los índices de escritura de ElasticSearch?

ElasticSearch es un grupo de = fragmentos primarios + fragmentos de réplica.

El índice solo se puede escribir en el fragmento principal y, luego, el fragmento principal se sincroniza con el fragmento de réplica. Sin embargo, el fragmento primario no es fijo. Puede ser causado por la red. Antes, Node1 era el fragmento primario, pero luego Node2 se convirtió en el fragmento primario después de ser elegido.

¿Cómo sabe el cliente cuál es el fragmento primario? Vea el proceso a continuación.

  1. El cliente envía una solicitud de escritura a un nodo NodeX
  2. NodeX pasa la información del documento y la solicitud se reenviará al nodo del fragmento principal
  3. Una vez que se procesa el fragmento principal, se notifica al fragmento de réplica que sincronice los datos y se envía un mensaje de éxito a Nodex.
  4. Nodex devuelve el resultado del procesamiento al cliente.

6. ¿Está familiarizado con el proceso de búsqueda de datos en el clúster de ElasticSearch?

  1. El cliente envía una solicitud al clúster y el clúster selecciona aleatoriamente un NodeX para procesar la solicitud.
  2. Nodex primero calcula en qué fragmento principal se encuentra el documento, por ejemplo, el fragmento principal A, que tiene tres copias A1, A2 y A3. Luego, la solicitud sondea una de las tres réplicas para completar la solicitud.
  3. Si no se puede confirmar la fragmentación, por ejemplo, si no se recupera un documento, se recorren todas las fragmentaciones.

Para agregar, la capacidad de almacenamiento de un nodo es limitada, por lo que existe el concepto de fragmentación. Pero los fragmentos pueden perderse, por lo que existe el concepto de réplicas.

Por ejemplo: el clúster ES tiene 3 fragmentos, fragmento A, fragmento B y fragmento C, luego fragmento A + fragmento B + fragmento C = todos los datos, y cada fragmento es solo aproximadamente 1/3. El fragmento A tiene copias A1 A2 A3, y los datos son los mismos.

7. ¿Entiende el problema y la solución del paso de página profundo de ElasticSearch?

Cambio de página profundo: por ejemplo, buscamos una vez, sondeamos todos los fragmentos, recopilamos los resultados, calificamos de acuerdo con algoritmos como TF-IDF y devolvemos los primeros 10 datos después de clasificarlos. El usuario se siente bien, dice que miro la página siguiente. ES todavía sondea todos los fragmentos, recopila los resultados, puntúa de acuerdo con algoritmos como TF-IDF y devuelve los primeros 11-20 datos después de clasificarlos.

Para los usuarios, pasar las páginas debería ser rápido, pero de hecho, la complejidad de la primera búsqueda será tan complicada como la siguiente búsqueda.

Si se soluciona, los resultados de búsqueda del usuario se pueden almacenar en Redis durante 10 minutos. De esta manera, la paginación es muy rápida, si el usuario no pasa la página durante más de 10 minutos, el usuario no pasará la página y los datos se pueden borrar.

8. Familiarizado con la optimización del rendimiento de ElasticSearch

1. Envío por lotes

El fondo es una gran cantidad de operaciones de escritura, y cada confirmación es una sobrecarga de la red. La red es siempre el foco de la optimización.

2. Optimizar disco duro

El archivo de índice debe aterrizar en el disco duro, y la idea de la sección trae más archivos pequeños.Disk IO es el cuello de botella de rendimiento de ES. Una unidad de estado sólido es mucho mejor que un disco duro normal.

3. Reducir el número de réplicas

Las réplicas pueden garantizar la disponibilidad del clúster, pero afectan seriamente la eficiencia de la escritura de índices. Al escribir el índice, no solo se escribe el índice, sino que también se completa la sincronización del índice con la copia. ES no es un motor de almacenamiento, no considere la pérdida de datos, el rendimiento es más importante. Si se trata de una importación por lotes, se recomienda cerrar la copia.

9. ¿Cuáles son los métodos de optimización de consultas de ElasticSearch?

Ajuste de fase de diseño

(1) De acuerdo con los requisitos incrementales del negocio, cree un índice basado en una plantilla de fecha y transfiera el índice a través de la API de transferencia;

(2) Utilizar alias para la gestión de índices;

(3) Realice una operación force_merge en el índice regularmente todas las mañanas para liberar espacio;

(4) Se adopta un mecanismo de separación frío y caliente, y los datos calientes se almacenan en SSD para mejorar la eficiencia de recuperación; los datos fríos se reducen periódicamente para reducir el almacenamiento;

(5) Utilizar curador para la gestión del ciclo de vida del índice;

(6) Solo para los campos que necesitan ser segmentados, configure razonablemente la palabra segmentador;

(7) La etapa de mapeo combina completamente los atributos de cada campo, ya sea que necesite recuperarse, almacenarse, etc. ……..

escribir afinación

(1) El número de copias antes de escribir se establece en 0;

(2) Desactive el intervalo de actualización antes de escribir y configúrelo en -1 para deshabilitar el mecanismo de actualización;

(3) Durante el proceso de escritura: se adopta la escritura masiva;

(4) Restaurar el número de copias y el intervalo de actualización después de escribir;

(5) Intente utilizar la identificación generada automáticamente.

ajuste de consulta

(1) deshabilitar comodín;

(2) Deshabilitar términos por lotes (cientos o miles de escenarios);

(3) Hacer pleno uso del mecanismo de índice invertido y utilizar el tipo de palabra clave tanto como sea posible;

(4) Cuando la cantidad de datos es grande, el índice se puede finalizar en función del tiempo antes de la recuperación;

(5) Establecer un mecanismo de enrutamiento razonable.

otra afinación

Ajuste de implementación, ajuste de negocio, etc.

En la parte anterior, el entrevistador evaluó básicamente su práctica previa o experiencia en operación y mantenimiento.

10. ¿Cómo implementa elasticsearch la elección maestra?

Entrevistador: Quiero comprender los principios subyacentes de los clústeres ES y no centrarme solo en el nivel empresarial.

requisitos previos:

(1) Solo los nodos que son nodos maestros candidatos (maestro: verdadero) pueden convertirse en nodos maestros.

(2) El propósito del número mínimo de nodos maestros (min_master_nodes) es evitar el cerebro dividido.

Verifique el código, la entrada principal es findMaster, seleccione el nodo maestro y devuelva correctamente el Maestro correspondiente; de ​​lo contrario, devuelva nulo. El proceso de elección se describe más o menos de la siguiente manera:

Paso 1: Confirme que la cantidad de nodos maestros candidatos alcance el estándar, el valor establecido en elasticsearch.yml

descubrimiento.zen.minimum_master_nodes;

Paso 2: Comparación: primero determine si tiene calificaciones de maestro, y aquellos con calificaciones de nodo maestro candidato regresarán primero;

Si ambos nodos son nodos maestros candidatos, el que tenga la identificación más pequeña será el nodo maestro. Tenga en cuenta que la identificación aquí es de tipo cadena.

Digresión: el método para obtener la identificación del nodo.

  • GET /_cat/nodes?v&h=ip,port,heapPercent,heapMax,id,name
  • puerto IP heapPercent heapMax id nombre

11. ¿Qué debo hacer si hay demasiados datos de índice en elasticsearch, cómo ajustar e implementar?

Entrevistador: Quiero entender las capacidades de operación y mantenimiento de grandes volúmenes de datos.

Respuesta: La planificación de los datos indexados debe planificarse en la etapa inicial. Como dice el refrán, "primero el diseño, la codificación después", para evitar de manera efectiva el impacto de la recuperación de clientes en línea u otros negocios causados ​​por el aumento repentino de datos y capacidad de procesamiento de clústeres insuficiente.

Cómo sintonizar:

nivel de índice dinámico

Cree un índice basado en la plantilla + tiempo + rollover api, por ejemplo: definición de la etapa de diseño: el formato de la plantilla del índice del blog es: formulario blog_index_timestamp, aumentando los datos todos los días. La ventaja de hacer esto es que el volumen de datos de un solo índice no será muy grande debido al aumento del volumen de datos, que está cerca de la potencia 32 de la línea superior 2-1, y el almacenamiento del índice ha alcanzado TB+ o Aún mas grande.

Una vez que un solo índice es muy grande, seguirán varios riesgos, como el almacenamiento, así que piense en el futuro y evítelo pronto.

capa de almacenamiento

Los datos fríos y calientes se almacenan por separado, los datos calientes (como los datos de los últimos 3 días o una semana) y el resto son datos fríos.

Para datos fríos en los que no se escribirán datos nuevos, se pueden considerar las operaciones regulares de compresión force_merge y de reducción para ahorrar espacio de almacenamiento y eficiencia de recuperación.

Nivel de implementación

Una vez que no hay un plan antes, esta es una estrategia de emergencia.

Combinado con la función de ES en sí que admite la expansión dinámica, el método de agregar máquinas dinámicamente puede aliviar la presión sobre el clúster. Nota: si el nodo maestro y otra planificación son razonables antes, la adición dinámica se puede completar sin reiniciar el clúster.

12. Cuénteme sobre la arquitectura de clúster de los es de su empresa, el tamaño de los datos del índice y cuántos fragmentos hay.

Entrevistador: Quiero saber los escenarios de uso de ES y la escala a la que la empresa del solicitante ha estado expuesta anteriormente, y si han realizado un diseño, planificación y ajuste de índices a una escala relativamente grande.

Respuesta: Simplemente responda con sinceridad y combine sus propios escenarios prácticos.

Por ejemplo: la arquitectura de clúster ES tiene 13 nodos, y el índice tiene un total de más de 20 índices según diferentes canales. Según la fecha, el incremento diario es de 20+. El índice: 10 fragmentos y el incremento diario de más de 100 millones. datos El control de tamaño de índice diario de cada canal: 150 GB dentro.

13. ¿Qué es Elastic Search?

Elasticsearch es un motor de búsqueda basado en Lucene. Proporciona un motor de búsqueda de texto completo distribuido y con capacidad para múltiples inquilinos con web HTTP y documentos JSON sin esquema. Elasticsearch se desarrolla en Java y se publica como código abierto según los términos de la licencia [Apache].

14. ¿Qué son los clústeres, nodos, índices, documentos y tipos en ElasticSearch?

  • Un clúster es una colección de uno o más nodos (servidores) que juntos contienen todos sus datos y brindan capacidades de indexación y búsqueda federadas en todos los nodos. Los clústeres se identifican con un nombre único, que de forma predeterminada es "elasticsearch". Este nombre es importante porque un nodo solo puede ser parte de un clúster si está configurado para unirse al clúster por su nombre.
  • Un nodo es un único servidor que forma parte de un clúster. Almacena datos y participa en funciones de búsqueda e indexación de clústeres.
  • Los índices son como "bases de datos" en las bases de datos relacionales. Tiene un mapa que define múltiples tipos. Un índice es un espacio de nombres lógico, asignado a uno o más fragmentos primarios y puede tener cero o más fragmentos de réplica. MySQL => Base de datos ElasticSearch => Índice
  • Un documento es como una fila en una base de datos relacional. La diferencia es que cada documento en el índice puede tener una estructura diferente (campos), pero debe tener el mismo tipo de datos para los campos comunes. MySQL => Bases de datos => Tablas => Columnas/Filas ElasticSearch => Índices => Tipos => Documentos con atributos
  • Los tipos son categorías/particiones lógicas del índice, cuya semántica depende totalmente del usuario.

15. ¿Qué es la fragmentación en ElasticSearch?

En la mayoría de los entornos, cada nodo se ejecuta en una caja o máquina virtual separada.

Índice: en Elasticsearch, un índice es una colección de documentos.

Fragmentación: debido a que Elasticsearch es un motor de búsqueda distribuido, los índices generalmente se dividen en elementos llamados fragmentos que se distribuyen en varios nodos.

 16. ¿Qué son las réplicas en ElasticSearch?

Un índice se divide en fragmentos para una fácil distribución y escalado. Una réplica es una copia de un fragmento. Un nodo es una instancia en ejecución de ElasticSearch que pertenece a un clúster. Un clúster consta de uno o más nodos que comparten el mismo nombre de clúster.

 17. ¿Qué es un analizador en ElasticSearch?

Cuando los datos se indexan en ElasticSearch, el analizador definido para el índice los transforma internamente. Un analizador consiste en un Tokenizer y cero o más TokenFilters. El compilador puede preceder a uno o más CharFilters. El módulo de análisis le permite registrar analizadores con nombres lógicos, a los que luego se puede hacer referencia en las definiciones de mapeo o en algunas API.

Elasticsearch viene con una serie de analizadores preconstruidos que están listos para usar. Como alternativa, puede combinar los filtros de caracteres integrados, los compiladores y los filtros para crear analizadores personalizados.

18. ¿Qué es un compilador en ElasticSearch?

El compilador se usa para dividir cadenas en términos o secuencias de tokens. Un compilador ingenuo podría dividir la cadena dondequiera que se encuentren espacios en blanco o signos de puntuación. Elasticsearch tiene varios tokenizadores integrados que se pueden usar para crear analizadores personalizados.

19. ¿Qué es un filtro en ElasticSearch?

Después de que el tokenizador procese los datos, antes de indexarlos, el filtro los procesa.

 20. ¿Cuál es el propósito de habilitar atributos, indexación y almacenamiento?

El atributo habilitado se aplica a varios campos creativos/específicos de ElasticSearch, como el índice y el tamaño. Los campos proporcionados por el usuario no tienen un atributo 'habilitado'. Almacenado significa que los datos son almacenados por Lucene y serán devueltos si se solicitan.

Los campos almacenados no necesariamente se pueden buscar. De forma predeterminada, los campos no se almacenan, pero el archivo de origen está completo. Dado que desea utilizar el valor predeterminado (lo que tiene sentido), no establezca el atributo de la tienda y el atributo de índice para la búsqueda.

Las propiedades indexadas solo se pueden usar para búsquedas. Solo se pueden buscar campos indexados. El motivo de la discrepancia es que los campos indexados se transforman durante el análisis, por lo que no puede recuperar los datos originales si es necesario.

Supongo que te gusta

Origin blog.csdn.net/weixin_43042683/article/details/131502469
Recomendado
Clasificación