Ne arayalım?

ARAMIZA KATILIN

BİZE ULAŞIN

Adres:

E-posta:

host/bin/bilisimlife.dll

iletisim@bilisimlife.net




 
Rserit
Developer
       
 1029  
 278

Elasticsearch Result window is too large, from + size must be less than or equal to: [10000] Hatası

Merhaba,
Elasticsearch ile pagination yaptırırken şöyle bir hata alabilirsiniz:

The remote server returned an error: (400) Bad Request. Call: Status code 400 from: POST /courts/_search?typed_keys=true&request_cache=true. ServerError: Type: search_phase_execution_exception Reason: "all shards failed" CausedBy: "Type: illegal_argument_exception Reason: "Result window is too large, from + size must be less than or equal to: [10000] but was [20000]. 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 setting." CausedBy: "Type: illegal_argument_exception Reason: "Result window is too large, from + size must be less than or equal to: [10000] but was [20000]. 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 setting."

Bu hatanın sebebi aslında detayında da açıklandığı gibi, sonuçların getirilmesi kaynak tüketimi açısından sınırlandırılmış.

Çözümü için index ayarlarınızdan "max_result_window" değerini arttırmanız gerekiyor. Console için örnek:

PUT ornek/_settings { "max_result_window" : 200000 }

Bu konulara burada değinmişler:
https://www.elastic.co/guide/en/elasticsearch/guide/current/pagination.html
https://www.elastic.co/guide/en/elasticsearch/guide/current/_fetch_phase.html

Açıklamaları bu şekilde:
"Belgelerinizin boyutuna, parça sayısına ve kullandığınız donanıma bağlı olarak, 10.000 ila 50.000 sonucu (1.000 ila 5.000 sayfa) derinlemesine sayfalamak mükemmel bir şekilde yapılabilir. Ancak yeterince büyük değerler söz konusu olduğunda, sıralama işlemi gerçekten çok ağır hale gelebilir ve büyük miktarda CPU, bellek ve bant genişliği kullanabilir. Bu nedenle, derin sayfalamaya karşı şiddetle tavsiyede bulunuyoruz"

Yani 10000'den fazla sonuç istiyorsanız, tüm veri bağlantılarında bellek kullanımı çok yüksek olacaktır çünkü her sorgu isteğinde daha fazla sonuç döndürmesi gerekir. Daha fazla veriniz ve daha fazla parçanız varsa, bu sonuçları birleştirmek verimsiz olacaktır. Ayrıca ES bunları önbelleğe alır, dolayısıyla yine daha fazla bellek kullanacaktır. Tam olarak ne kadar aldığınızı denemeniz ve hata yapmanız gerekir.

Alternatif olarak, scroll veya searchAfter kullanmayı deneyebilirsiniz. Daha gerçek zamanlı sorgular için searchAfter daha uygundur.

Scroll için döküman: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html

SearchAfter dökümanı: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-after.html

İyi çalışmalar,
Recep

Bu gönderiyi 05.01.2024 23:48:28 tarihinde Rserit düzenledi.

Developer.