Explicación detallada de la séptima búsqueda de la búsqueda elástica
debe enviar una solicitud a la réplica/maestro de todos los fragmentos. Si hay varias réplicas de cada fragmento, se pueden enviar solicitudes de búsqueda simultáneas a otras réplicas al mismo tiempo.
Los parámetros de búsqueda son similares. Beijing es el valor del campo _all de este documento, y el índice invertido correspondiente se establece después de la segmentación de palabras.
DSL-Domain Specific Language, un lenguaje de dominio especial.
Los parámetros de la solicitud se pasan en el cuerpo de la solicitud. En Elasticsearch, el juego de caracteres del cuerpo de la solicitud por defecto es UTF-8.
Cuantos más parámetros haya después de la cadena de consulta, más complejas serán las condiciones de búsqueda, que no podrán satisfacer las necesidades.
DSL: Idioma específico de dominio, un idioma en un dominio específico.
El lenguaje de búsqueda exclusivo de Es puede incluir condiciones de búsqueda en el cuerpo de la solicitud, lo cual es poderoso.
Consultar todo GET /book/_search
¿Ordenar GET /book/_search? Sort=price:desc
Consulta de paginación GET /book/_search? size = 10 & from=0
Especifique el campo de retorno GET /book/ _search? _ fuente = nombre, modelo de investigación
Las consultas complejas se implementan combinando los distintos tipos de consultas mencionadas anteriormente.
Requisitos de búsqueda: el título debe contener elasticsearch, el contenido puede contener o no elasticsearch y Author_id no puede ser 111.
Datos iniciales:
Búsqueda:
Retorno:
Requisitos de búsqueda más complejos:
seleccione * de test_index donde nombre = ' Tom ' o (contratado = verdadero y (personalidad = ' bueno ' y grosero! = verdadero))
Recrear índice del libro
Insertar datos
Búsqueda
El algoritmo de puntuación de relevancia simplemente calcula la correlación entre el texto de un índice y el texto de búsqueda.
Elasticsearch utiliza el algoritmo de frecuencia $TERM/frecuencia inversa de documento, conocido como algoritmo TF/IDF. Frecuencia de términos TF ($Frecuencia de términos), Frecuencia de documentos inversos IDF (Frecuencia de documentos inversos IDF)
$Frecuencia de términos: ¿Cuántas veces aparece cada entrada en el texto de búsqueda en el texto del campo? Cuantas más ocurrencias, más fuerte será la correlación.
Ejemplo: Solicitud de búsqueda: hola mundo
doc1: Hola tú y yo, el mundo es muy bueno.
Doctor 2: Hola, ¿cómo estás?
Frecuencia inversa del documento: el número de veces que aparece cada entrada en el texto de búsqueda en todos los documentos de todo el índice. Cuantas más apariciones, Cuanto menor sea la correlación.
Ejemplo: Solicitud de búsqueda: hola mundo
doc1: Hola, hoy es un buen día
Doctor 2: Hola mundo, ¿cómo estás?
El índice completo tiene 100 millones de datos. Hay 1000 documentos para hola y 100 documentos para mundo.
El archivo 2 es más relevante
Especificación de longitud del campo: longitud del campo, cuanto más largo sea el campo, más débil será la correlación.
Ejemplo: Solicitud de búsqueda: hola mundo
Doc 1: { "Título": "Hola artículo", "Contenido": "balababal 10000 artículos" }
Doc 2: {"title": "myarticle", "content":" balabalabal 65438+10,000, the world"}
Volver
Al buscar, debes confiar en Ordenar el índice; al ordenar, debe confiar en el índice ortográfico para mirar cada campo de cada documento y luego ordenar. El llamado índice de ortografía es en realidad el valor del documento.
Al establecer un índice, por un lado, se establecerá un índice invertido para la búsqueda, por otro lado, se establecerá un índice ortogonal, es decir, valor de documento, para ordenar, agregar y filtrar; y otras operaciones.
Los valores del documento se guardan en el disco. En este momento, si hay suficiente memoria, el sistema operativo la almacenará automáticamente en caché en la memoria y el rendimiento seguirá siendo alto. Si no hay suficiente memoria, el sistema operativo la escribe en el disco.
Índice invertido
doc1: Hola mundo, tú y yo
Doctor 2: Hola mundo, ¿cómo estás?
Buscar cuando:
Hola->Hola
Hola->doc1
Tú->Archivo 1, Archivo 2
p>doc1 : Hola mundo, tú y yo
Doctor 2: Hola mundo, ¿cómo estás?
Hay un problema con el método de clasificación.
Índice ortogonal
doc1: { "Nombre": "Jack", "Edad": 27 }
Documento 2: { "Nombre": " Tom ","age":30}
Para la búsqueda normal, si no se agregan desde y tamaño, los primeros 10 elementos se buscarán de forma predeterminada y se ordenarán por _score.
Búsqueda por fases. Se requiere que las condiciones de la consulta coincidan exactamente con datos específicos para convertirse en resultados de búsqueda. Sus características son: 1-Las condiciones de búsqueda no realizan ningún análisis de segmentación de palabras; 2-La coincidencia exacta en el índice invertido (índice directo) correspondiente al campo de búsqueda ya no es una simple búsqueda de texto completo.
Determina qué fragmento se utilizará para realizar la operación de búsqueda.
_primary, _primary_first, _local, _only_node:xyz, _prefere_node:XYZ, _shards:2,3
Problema de resultado de rebote, ambos documentos están ordenados y los valores de los campos son los mismos; el orden puede ser diferente en diferentes fragmentos; cada solicitud de sondeo es para un fragmento de réplica diferente; la clasificación de los resultados de búsqueda que ve en la página es diferente cada vez; Este es el resultado de rebotar, el resultado de saltar.
En el momento de la búsqueda, las solicitudes de búsqueda se envían a cada fragmento de réplica (fragmento primario) mediante sondeo, pero el orden de los documentos en diferentes fragmentos puede ser diferente.
La solución es establecer la preferencia en una cadena, como user_id, para que cada usuario use el mismo fragmento de réplica para cada búsqueda, de modo que no vea resultados saltantes.
Se limita principalmente a un período de tiempo determinado y parte de los datos obtenidos se devolverán directamente para evitar largos tiempos de consulta.
Documente el enrutamiento del documento, _id enrutamiento, enrutamiento = user_id, para que los datos correspondientes al mismo usuario puedan enviarse a un fragmento.
Valor predeterminado: query_then_fetch
Dfs_query_then_fetch puede mejorar la precisión de la clasificación relacionada.