La Red de Conocimientos Pedagógicos - Currículum vitae - Solución de búsqueda elástica: muéstrenos su DSL.

Solución de búsqueda elástica: muéstrenos su DSL.

0. Introducción

En el desarrollo empresarial, a menudo nos quedamos atrapados en los detalles del desarrollo e ignoramos el origen de las cosas.

Los estudiantes suelen preguntar:

Espera, espera...

Si las preguntas aparentemente complicadas anteriores se convierten a DSL y se escriben con claridad, si aclaras los detalles Una y otra vez del problema, naturalmente resolverás más de la mitad.

Entonces, muestra tu dsl. No importa en qué idioma esté la búsqueda, se convierte en una consulta es y es una consulta sql. En es, corresponde a la sintaxis dsl, y luego es se divide en varias combinaciones de $term y finalmente se pasa a lucene para su procesamiento.

Muestre su DSL y asegúrese de que la implementación en la programación sea consistente con su kibana o complemento principal. Esto es muy importante y fácilmente se pasa por alto.

Si no comprende el desmontaje de DSL, agregue perfil:true o explique:true y el resultado del desmontaje será claro de un vistazo.

Definición de Wikipedia: el lenguaje específico de dominio (DSL) se refiere a un lenguaje informático que se centra en un determinado campo de aplicación. También traducido a idiomas específicos del dominio.

Elasticsearch proporciona un DSL de consulta completo basado en JSON para definir consultas. Piense en la consulta DSL como el AST (árbol de sintaxis abstracta) de la consulta, que consta de dos tipos de cláusulas:

1. Cláusulas de consulta hoja

Las cláusulas de consulta hoja buscan específico Un valor específico en un campo, como una consulta de coincidencia, término o rango. Estas consultas se pueden utilizar de forma independiente.

2. Cláusulas de consulta compuesta

Las cláusulas de consulta compuesta pueden combinar otras consultas hoja o compuestas para combinar lógicamente múltiples consultas (como consultas bool o dis_max) o cambiar su comportamiento (como Constant_score). consulta).

Pon un ejemplo para que quede claro de un vistazo.

Algunas personas pueden sentirse ansiosas después de ver esto: "I X, ¿no es esta la definición del sitio web oficial?" "

Para citar una sopa de pollo, "Es obvio que al menos 100 millones de personas en China no lo saben". De manera similar, más de n personas en la comunidad tecnológica de Elasticsearch harán esta pregunta obvia. .

La cognición básica no teme a la repetición, lo terrible es aprender, pulir y sentar una base sólida.

Las operaciones centrales relacionadas con Elasticsearch se pueden explicar en un sentido amplio. de la siguiente manera, que no necesariamente cubre todo, pero solo enciende el fuego e ilustra la importancia de DSL

De grande a pequeño

Generalmente usamos Kibana o herramientas de terceros. Complemento Head, herramienta cerebro, herramienta elastic-hq para administrar el clúster.

Básicamente, la utilización del hardware (disco, CPU, memoria) y el estado del clúster se pueden ver de un vistazo.

Pero un DSL básico será más conveniente y más conveniente para un análisis detallado.

Por ejemplo: consulta de estado del clúster:

Por ejemplo: punto de acceso del nodo. vista de hilo:

Por ejemplo: vista sobre la asignación de fragmentos de clúster:

Siempre se enfatiza el ciclo de vida del indicador. El concepto se refiere principalmente a la gestión de toda la cadena de procesos de indicadores "nacimiento, vejez, enfermedad y muerte"

Al crear índices, damos prioridad al uso de plantillas que son más flexibles que los índices simples.

Crear un índice es similar a crear una tabla en Mysql. Es muy importante diseñar una estructura de tabla correspondiente a ES de antemano.

Dos dimensiones:

Por ejemplo:

Por ejemplo: limpieza de índice. cache

Por ejemplo, si el fragmento se reasigna por algún motivo, _recovery comprobará el estado de asignación del fragmento para obtener un nivel superior. Para la gestión del ciclo de vida del índice de versión, se recomienda utilizar la función ILM

<. p>Esto es familiar para todos

Por ejemplo:

La eliminación de datos incluye: eliminar especificando la identificación y eliminar por lotes delete_by_query (cumpliendo las condiciones dadas). >

Las operaciones de actualización incluyen actualización/inserción de actualización o actualización por lotes update_by_query con la identificación especificada

Esto es lo más destacado de ES.

Incluyendo, entre otros:

1. Admite consultas de coincidencia exacta: término $, rango, existe, comodín, prefijo, difuso, etc.

2. La búsqueda de texto completo admite: coincidencia, frase_coincidencia, cadena_query, coincidencia múltiple, etc.

1. Agregación intermitente

Por ejemplo, el término más utilizado es similar al grupo por función de Mysql. 2. Agregación de cálculo de métricas

Ejemplo: compare las operaciones de mínimo, máximo y suma en Mysql. 3. La canalización realiza la agregación en función de los resultados de la agregación.

Ejemplo: bucket_script implementa una operación similar a la de MySQL después de agrupar por.

Deje que todos piensen en agregar según los escenarios comerciales.

Aquí responderé una por una a las preguntas mencionadas al principio.

En el negocio real de Mysql, generalmente verificamos que no haya ningún problema con SQL antes de escribir el código comercial.

Lo mismo ocurre en los servicios ES reales. El DSL confirma que no hay problemas antes de escribir el código de servicio.

Después de escribir java o python, imprima el DSL y compruebe si es exactamente igual.

La inconsistencia es básicamente la razón por la cual los resultados son diferentes a las expectativas.

Paso uno: utilice la API del analizador para analizar la declaración de la consulta y los resultados de la segmentación de palabras del documento que se va a consultar.

No se puede subestimar la importancia de esta API.

Paso 2: Puedes usar perfil:true para ver los detalles. Paso 3: Verifique el principio de orden de palabras de match_phrase.

Sql es compatible a partir de la versión 6.3. Si no puede escribir, puede utilizar la siguiente API para traducir.

No es lo suficientemente preciso, pero sí como referencia y debe ajustarse según los detalles del negocio.

Por supuesto, se recomienda comenzar desde el punto de vista comercial y escribir el DSL usted mismo.

De grande a pequeño, refine gradualmente la solución.

Fin

En la cuenta oficial de WeChat, responda a palabras clave como Facejing, es, Flink, Spring, Java, Kafka, monitoreo, etc. para ver más palabras clave correspondientes al artículo.

1. Aprenda Flink de 0 a 1: Introducción a Flink”: Apache Flink

2. Aprenda Flink de 0 a 1: cree Flink en el entorno MAC 0, comience. con la construcción de programas simples.

3. Aprenda Flink de 0 a 1: explicación detallada de los archivos de configuración de Flink

4. Aprenda la introducción a la fuente de datos de Flink de 0 a 1

5. Aprendizaje de Flink 》——De 0 a 1)——¿Cómo personalizar la fuente de datos?

6. Introducción al aprendizaje del receptor de datos de Flink de 0 a 1

7. "Aprendizaje de Flink" - de 0 a 1): ¿cómo personalizar el receptor de datos?

8. Aprenda la conversión de datos de Flink de 0 a 1-Flink.

9. Aprenda Flink de 0 a 1: Introducción a la ventana de flujo en Flink.

10. Aprenda Flink de 0 a 1: varias explicaciones detalladas de Flink - "Flink

11. Aprenda Flink de 0 a 1: Flink lee y escribe datos de Kafka en ElasticSearch.

12. "Aprendiendo Flink de 0 a 1" - ¿Cómo ejecutar el proyecto Flink?

13. Aprenda Flink de 0 a 1: Flink lee datos de Kafka y los escribe en Kafka.

14. Aprenda Flink de 0 a 1: configuración de alta disponibilidad del administrador de trabajos de Flink

15. Aprenda Flink de 0 a 1——Introducción a Flink》——Paralelismo y ranuras de Flink

16. Aprenda Flink de 0 a 1: Flink lee datos de Kafka y escribe en MySQL en lotes.

17. Aprenda Flink de 0 a 1: Flink lee datos de Kafka y los escribe en RabbitMQ.

18. "Learning Flink" - De 0 a 1" - ¿A dónde fue el paquete jar que subiste?

19. "Bomba" de big data: marco de computación en tiempo real Flink

20. "Análisis del código fuente de Flink": compilación y ejecución del código fuente.

21. ¿Por qué el procesamiento de secuencias es el futuro?

22. : Construcción de un almacén de datos real basado en Flink SQL

23. Comparación de rendimiento entre Flink y Storm

24 Introducción a la gestión del estado de Flink y al mecanismo de tolerancia a fallas. p >25. Análisis de principios | Apache Flink se combina con Kafka para crear un procesamiento de un extremo a otro exactamente una vez

26. ¿Cómo gestiona Apache Flink la memoria?

27. Flink de 0 a 1" ——¿Conoce esta configuración de administración de Flink”——Flink?

28. “Aprendiendo Flink de 0 a 1”——Flink no se puede dividir continuamente

29. Aprendizaje 0 a 1: compartimos 4 libros de Flink y más de 20 artículos en papel

30, 360 ejercicios en profundidad: Comparación de los niveles de los protocolos Flink y Storm

Interpret 31 y Apache de antemano. Las características principales de Flink 1.9

32. ¿Cómo construir una plataforma de detección de anomalías inteligente en tiempo real basada en Flink + TensorFlow? Basta con leer este artículo 33. Meituan Dianping. Flink. Práctica de construcción de almacenes en tiempo real.

34. Flink soul 200 preguntas, ¿quién puede soportarlo?

35 Conozca Flink al menos una vez. p>36. ¿Su empresa necesita introducir un motor informático en tiempo real?