Elasticsearch 2.1'den bilgi alıyoruz ve kullanıcının sonuçlara göz atmasına izin veriyoruz. Kullanıcı yüksek bir sayfa numarası istediğinde aşağıdaki hata mesajını alırız:
Sonuç penceresi çok büyük, + boyutundan küçük veya şuna eşit olmalıdır: [10000] ama [10020] idi. Büyük veri kümelerini talep etmenin daha verimli bir yolu için kaydırma api'sine bakın. Bu sınır, [index.max_result_window] dizin seviyesi parametresi değiştirilerek ayarlanabilir
Esnek belge, bunun yüksek bellek tüketiminden ve kayan api kullanımından kaynaklandığını söylüyor:
Daha yüksek değerler, aramayı yürüten her arama ve parça başına önemli yığın bellek parçalarını tüketebilir. Herhangi bir derin kaydırma için kaydırma api'sini kullanmak olduğu için bu değeri bırakmak en güvenli yoldur https://www.elastic.co/guide/en/elasticsearch/reference/2.x/breaking_21_search_changes.html#_from_size_limits
Mesele şu ki, büyük veri kümelerini almak istemiyorum. Veri kümesinden yalnızca sonuç kümesinde çok yüksek olan bir dilim almak istiyorum. Ayrıca kayan belge şöyle diyor:
Kaydırma, gerçek zamanlı kullanıcı istekleri için tasarlanmamıştır https://www.elastic.co/guide/en/elasticsearch/reference/2.2/search-request-scroll.html
Bu bana bazı sorular bırakıyor:
1) 10000-10020 sonucu için "normal" bir arama isteği yerine 10020 sonucuna gitmek için kaydırma apisini kullanırsam (ve 10000'in altındaki her şeyi göz ardı edersem) bellek tüketimi gerçekten daha düşük olur mu (eğer öyleyse neden)?
2) Kaydırma API'sı benim için bir seçenek gibi görünmüyor, ancak "index.max_result_window" u artırmam gerekiyor. Bununla ilgili deneyimi olan var mı?
3) Sorunumu çözmek için başka seçenekler var mı?
'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.')
4719 sayfası olduğunu söyledi (her sayfa 10 sonuç). ve bence öneriniz işe yarıyor.