티스토리 뷰

들어가며

  • 많은 양의 데이터를 검색해오는 경우 아래와 같은 오류 메시지가 발생할 수 있습니다.
Result window is too large, from + size must be less than or equal to: [10000] but was [10020]. 
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
  • Index는 기본적으로 max_result_window 라는 검색시 데이터 최대 개수 제한이 있는데 10000으로 설정됩니다.
  • 이런 경우 ElasticSearch 에서는 많은 양의 데이터 검색을 삼가라고 권하지만 그럼에도 검색 개수를 늘려야 하는 경우가 있을 수 있습니다.
  • 그럴 때 setting을 통해서 해결하는 방법에 대해서 알아보겠습니다.

해결방법

  • index에 대해서 max_result_window 값을 원하는 값만큼 늘려주면 됩니다.
    • 다만, 너무 늘릴 경우 성능에 문제가 있을 수 있다고 함
//CURL 사용시
curl -XPUT "http://localhost:9200/my_index/_settings" -H 'Content-Type: application/json' -d '{ "index" : { "max_result_window" : 500000 } }'

//Tool 사용시
PUT your_index_name/_settings
{ 
  "max_result_window" : 500000 
}

 

 

  • 다만 원칙적으로 Data의 개수가 너무 많은 경우는 좀 더 Specific한 쿼리를 날리거나 데이터의 개수는 표현하되 Paging은 되지 않도록(구글 검색과 같이) 하는 것을 권장합니다.
    • Scrolling, Search After 라는 기능이 있긴하지만 느림
반응형
댓글