es consulta de paginação

1. De e tamanho consulte todos os dados e remova as partes desnecessárias.

POST /my_index/my_type/_search
{
    "query": { "match_all": {}},
    "from": 100,
    "size":  10
}

2. A rolagem registra uma posição de leitura para garantir que a leitura possa continuar rapidamente na próxima vez.

rolagem

Fase de consulta: salve o conjunto de resultados da consulta e a lista doc_id em um contexto

estágio de busca: recuperar de acordo com o tamanho

POST /twitter/tweet/_search?scroll=1m
{
    "size": 100,
    "query": {
        "match" : {
            "title" : "elasticsearch"
        }
    }
}

Fase de consulta: cada fragmento atingirá o resultado (doc_id e _score) para criar um instantâneo da fila de prioridade no contexto na ordem de _score e apontará para ele por meio de scroll_id, lastEMITIDOC aponta para o último local acessado e, finalmente, TOP(size) O doc id é retornado ao nó de coordenação.

Estágio de busca: o nó coordenador mescla e classifica os resultados retornados por cada fragmento e, finalmente, procura os dados completos dos resultados retornados por meio de doc_id. Em seguida, atualize o contexto em cada fragmento.
 

3、pesquisa_depois

Determine a posição da próxima página com base nos últimos dados da página anterior. Como os dados de cada página dependem dos últimos dados da página anterior, a solicitação de salto de página não pode ser concluída; durante o processo de solicitação de paginação, se houver adição, exclusão, modificação e consulta de dados de índice, essas alterações também serão refletidas no cursor em tempo real.

A ideia central é registrar o último local visitado

GET twitter/_search
{
    "size": 10,
    "query": {
        "match" : {
            "title" : "es"
        }
    },
    "search_after": [124648691, "624812"],
    "sort": [
        {"date": "asc"},
        {"_id": "desc"}
    ]
}

Método de classificação ES

A classificação é necessária na fase de consulta. Como classificar sem consulta completa?

  • A consulta de filtro é  doc_id (a ordem em que a estrutura do arquivo Lucene é indexada no momento)
  • Classificar por pontuação de relevância (_score)
  • Classificar por campo especificado (ordem no índice de termos)

é o método de consulta de paginação padrão

Modo de paginação desempenho vantagem deficiência Cenas
de + tamanho Baixo Boa flexibilidade e implementação simples Problema de paginação profunda O volume de dados é relativamente pequeno e pode tolerar problemas profundos de paginação.
rolagem meio Problema de paginação de profundidade corrigido Ele não pode refletir a natureza em tempo real dos dados (versão instantânea). O custo de manutenção é alto e um scroll_id precisa ser mantido. A exportação de dados massivos requer a consulta de dados de conjuntos de resultados massivos
pesquisa_depois alto O melhor desempenho é que não há problemas de paginação profunda e pode refletir alterações em tempo real nos dados. A implementação é complexa e requer um campo globalmente exclusivo. A implementação da paginação contínua será mais complicada porque cada consulta requer os resultados da consulta anterior. Não é adequada para consultas de salto de página grandes.

Pergunta da entrevista JD.com: solução de paginação profunda ElasticSearch

es princípio de consulta de paginação_Ei, ei, ei_java blog-CSDN blog

Acho que você gosta

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