특히, 나는 페이지 매기기를 수행하기 위해 Elasticsearch를 사용하지만,이 질문은 모든 데이터베이스에 적용될 수 있습니다.원본 데이터가 자주 변경 될 때 페이지 매김을 처리하는 방법
탄성 설지는 from
및 to
매개 변수를 사용하여 paginate search results에 대한 방법을 제공합니다.
get me the most recent data from result 1 to 10
이 잘 작동을 실행합니다.
사용자는 "다음 페이지"를 클릭하고 쿼리는 다음과 같습니다 get me the most recent data from result 11 to 20
문제는 두 개의 쿼리 사이의 시간에, 2 개 개의 새로운 레코드가 매겨진 결과를 의미하는 기가 데이터베이스에 추가 된 것입니다 (첫 번째 페이지의 마지막 2 개는 두 번째 페이지의 처음 두 개로 표시됩니다).
이 문제를 방지하는 가장 좋은 해결책은 무엇입니까? 지금은 쿼리에 필터를 추가하여 이전 쿼리의 마지막 결과보다 나중에 결과 만 포함하도록 지정합니다. 그러나 그것은 단지 해커처럼 보인다.
자세한 설명을 주셔서 감사합니다. 웬일인지, 나는 scan/scroll이 같은 물건이었다라고 생각하고 있었다. 그러나 그것은 분명하게 사실이 아니다! 필터링 할 최신 타임 스탬프와 같은 것이 없으면 스크롤이 좋은 선택 인 것 같습니다. – bradvido
타임 스탬프 필터링의 단점은 누군가가 문서를 삭제하는 경우 결과의 다음 페이지에서 문서가 반환되지 않도록 할 수 있다는 것입니다. – writofmandamus
Scroll API 문서 '스크롤은 실시간 사용자 요청을위한 것이 아닙니다.', – Ben