consulta de paginación es

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

Supongo que te gusta

Origin blog.csdn.net/weixin_36416680/article/details/128776533
Recomendado
Clasificación