1. Desde y tamaño consulte todos los datos y luego elimine las partes innecesarias.
POST /my_index/my_type/_search
{
"query": { "match_all": {}},
"from": 100,
"size": 10
}
2. El desplazamiento registra una posición de lectura para garantizar que la lectura pueda continuar rápidamente la próxima vez.
Desplazarse
Fase de consulta: guarde el conjunto de resultados de la consulta y la lista doc_id en un contexto
etapa de búsqueda: recuperación según el tamaño
POST /twitter/tweet/_search?scroll=1m
{
"size": 100,
"query": {
"match" : {
"title" : "elasticsearch"
}
}
}
Fase de consulta: cada fragmento alcanzará el resultado (doc_id y _score) para crear una instantánea de la cola de prioridad en el contexto en orden de _score y señalará a través de scroll_id, lastEmittedDoc apunta a la última ubicación a la que se accedió y, finalmente, TOP (tamaño) El La identificación del documento se devuelve al nodo coordinador.
Etapa de recuperación: el nodo coordinador fusiona y clasifica los resultados devueltos por cada fragmento y finalmente busca los datos completos de los resultados devueltos a través de doc_id. Luego actualice el contexto de cada fragmento.
3、buscar_después
Determine la posición de la página siguiente en función de los últimos datos de la página anterior. Debido a que los datos de cada página dependen de los últimos datos de la página anterior, la solicitud de salto de página no se puede completar; durante el proceso de solicitud de paginación, si hay adición, eliminación, modificación y consulta de datos de índice, estos cambios también se reflejarán en el cursor en tiempo real.
La idea central es registrar la última ubicación visitada.
GET twitter/_search
{
"size": 10,
"query": {
"match" : {
"title" : "es"
}
},
"search_after": [124648691, "624812"],
"sort": [
{"date": "asc"},
{"_id": "desc"}
]
}
método de clasificación ES
La clasificación es necesaria en la etapa de consulta. ¿Cómo ordenar sin una consulta completa?
- La consulta de filtro es doc_id (el orden en el que se indexa la estructura de archivos de Lucene en ese momento)
- Ordenar por puntuación de relevancia (_score)
- Ordenar por campo especificado (ordenar en índice de términos)
es método de consulta de paginación predeterminado
Modo de paginación | actuación | ventaja | defecto | Escenas |
---|---|---|---|---|
desde + tamaño | Bajo | Buena flexibilidad e implementación sencilla. | Problema de paginación profunda | El volumen de datos es relativamente pequeño y puede tolerar problemas de paginación profundos. |
Desplazarse | medio | Problema de paginación de profundidad solucionado | No puede reflejar la naturaleza en tiempo real de los datos (versión instantánea), el costo de mantenimiento es alto y es necesario mantener un scroll_id. | Exportar datos masivos requiere consultar datos de conjuntos de resultados masivos |
buscar_después | alto | El mejor rendimiento es que no hay problemas de paginación profunda y puede reflejar cambios en los datos en tiempo real. | La implementación es compleja y requiere un campo globalmente único. La implementación de la paginación continua será más complicada porque cada consulta requiere los resultados de la consulta anterior. No es adecuado para consultas de salto de página grandes. |
Pregunta de la entrevista de JD.com: solución de paginación profunda ElasticSearch
es principio de consulta de paginación_Hey hey hey_java blog-CSDN blog