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