Chúng tôi lấy thông tin từ Elasticsearch 2.1 và cho phép người dùng duyệt trang thông qua kết quả. Khi người dùng yêu cầu số trang cao, chúng tôi nhận được thông báo lỗi sau:
Cửa sổ kết quả quá lớn, từ + kích thước phải nhỏ hơn hoặc bằng: [10000] nhưng là [10020]. Xem api cuộn để biết cách hiệu quả hơn để yêu cầu tập dữ liệu lớn. Có thể đặt giới hạn này bằng cách thay đổi thông số cấp chỉ mục [index.max_result_window]
Tài liệu đàn hồi nói rằng điều này là do tiêu thụ bộ nhớ cao và để sử dụng api cuộn:
Các giá trị cao hơn có thể tiêu tốn một lượng lớn bộ nhớ heap trên mỗi lần tìm kiếm và mỗi phân đoạn thực hiện tìm kiếm. An toàn nhất là để lại giá trị này vì đây là cách sử dụng api cuộn cho bất kỳ cuộn sâu nào https://www.elastic.co/guide/en/elasticsearch/reference/2.x/break_21_search_changes.html#_from_size_limits
Vấn đề là tôi không muốn truy xuất các tập dữ liệu lớn. Tôi chỉ muốn truy xuất một lát từ tập dữ liệu nằm rất cao trong tập kết quả. Ngoài ra, tài liệu cuộn cho biết:
Thao tác cuộn không dành cho yêu cầu của người dùng trong thời gian thực https://www.elastic.co/guide/en/elasticsearch/reference/2.2/search-request-scroll.html
Điều này khiến tôi có một số câu hỏi:
1) Mức tiêu thụ bộ nhớ có thực sự thấp hơn (bất kỳ nếu vậy tại sao) nếu tôi sử dụng api cuộn để cuộn đến kết quả 10020 (và bỏ qua mọi thứ dưới 10000) thay vì thực hiện yêu cầu tìm kiếm "bình thường" cho kết quả 10000-10020 không?
2) Có vẻ như API cuộn không phải là một tùy chọn đối với tôi mà là tôi phải tăng "index.max_result_window". Có ai có bất cứ kinh nghiệm với điều này?
3) Có bất kỳ tùy chọn nào khác để giải quyết vấn đề của tôi không?
'Result window is too large, from + size must be less than or equal to: [10000] but was [47190]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.')
Nó cho biết nó có 4719 trang (mỗi trang 10 kết quả). và tôi nghĩ rằng đề xuất của bạn hiệu quả.