Search settings

Cloud_ Ghost·2025년 9월 8일

opensearch

목록 보기
7/23

https://docs.opensearch.org/latest/install-and-configure/configuring-opensearch/search-settings/

OpenSearch 검색 설정

OpenSearch는 다음과 같은 검색 설정을 지원합니다:

기본 검색 설정

search.max_buckets (동적, 정수): 단일 응답에서 허용되는 집계 버킷의 최대 수입니다. 기본값은 65535입니다.

search.phase_took_enabled (동적, 불린): 검색 응답에서 단계별 소요 시간 값 반환을 활성화합니다. 기본값은 false입니다.

search.allow_expensive_queries (동적, 불린): 비용이 많이 드는 쿼리를 허용하거나 허용하지 않습니다. 자세한 내용은 비용이 많이 드는 쿼리를 참조하세요.

search.default_allow_partial_results (동적, 불린): 요청이 시간 초과되거나 샤드가 실패할 경우 부분 검색 결과 반환을 허용하는 클러스터 수준 설정입니다. 검색 요청에 allow_partial_search_results 매개변수가 포함되어 있으면 해당 매개변수가 이 설정보다 우선합니다. 기본값은 true입니다.

타임아웃 설정

search.cancel_after_time_interval (동적, 시간 단위): 조정 노드 수준에서 모든 검색 요청에 대한 기본 타임아웃을 설정하는 클러스터 수준 설정입니다. 지정된 시간에 도달하면 요청이 중지되고 관련된 모든 작업이 취소됩니다. 기본값은 -1(타임아웃 없음)입니다.

search.default_search_timeout (동적, 시간 단위): 검색 요청이 샤드 수준에서 취소되기 전에 실행할 수 있는 최대 시간을 지정하는 클러스터 수준 설정입니다. 검색 요청에서 타임아웃 간격이 지정되면 해당 간격이 구성된 설정보다 우선합니다. 기본값은 -1입니다.

Keep Alive 설정

search.default_keep_alive (동적, 시간 단위): 스크롤 및 PIT(Point in Time) 검색에 대한 기본 keep alive 값을 지정합니다. 요청이 샤드에 여러 번 도달할 수 있기 때문에(예: 쿼리 및 페치 단계 중) OpenSearch는 각 개별 샤드 요청에 대해 샤드 상태의 일관성을 보장하기 위해 요청의 전체 기간 동안 존재하는 요청 컨텍스트를 엽니다. 표준 검색에서는 페치 단계가 완료되면 요청 컨텍스트가 닫힙니다. 스크롤 또는 PIT 검색의 경우 OpenSearch는 명시적으로 닫히거나 keep alive 시간에 도달할 때까지 요청 컨텍스트를 열어 둡니다. 백그라운드 스레드는 주기적으로 모든 열린 스크롤 및 PIT 컨텍스트를 확인하고 keep alive 타임아웃을 초과한 것들을 삭제합니다. search.keep_alive_interval 설정은 컨텍스트가 만료되었는지 확인하는 빈도를 지정합니다. search.default_keep_alive 설정은 만료에 대한 기본 데드라인입니다. 스크롤 또는 PIT 요청은 명시적으로 keep alive를 지정할 수 있으며, 이는 이 설정보다 우선합니다. 기본값은 5m입니다.

search.keep_alive_interval (정적, 시간 단위): OpenSearch가 keep alive 제한을 초과한 요청 컨텍스트를 확인하는 간격을 결정합니다. 기본값은 1m입니다.

search.max_keep_alive (동적, 시간 단위): 최대 keep alive 값을 지정합니다. max_keep_alive 설정은 다른 keep_alive 설정(예: default_keep_alive) 및 요청 수준 keep alive 설정(스크롤 및 PIT 컨텍스트용)에 대한 안전 확인으로 사용됩니다. 두 경우 모두 요청이 max_keep_alive 값을 초과하면 작업이 실패합니다. 기본값은 24h입니다.

성능 및 취소 설정

search.low_level_cancellation (동적, 불린): 저수준 요청 취소를 활성화합니다. Lucene의 클래식 타임아웃 메커니즘은 검색 결과를 수집하는 동안에만 시간을 확인합니다. 그러나 와일드카드나 접두사와 같은 비용이 많이 드는 쿼리는 결과 수집을 시작하기 전에 확장하는 데 오랜 시간이 걸릴 수 있습니다. 이 경우 쿼리가 타임아웃 값보다 긴 시간 동안 실행될 수 있습니다. 저수준 취소 메커니즘은 검색 결과를 수집하는 동안뿐만 아니라 쿼리 확장 단계 중이나 Lucene 작업을 수행하기 전에도 타임아웃을 적용하여 이 시나리오를 해결합니다. 기본값은 true입니다.

search.max_open_scroll_context (동적, 정수): 노드에 대한 최대 열린 스크롤 컨텍스트 수를 지정하는 노드 수준 설정입니다. 기본값은 500입니다.

search.request_stats_enabled (동적, 불린): 조정자 노드의 관점에서 단계별 타이밍 통계의 노드 수준 수집을 활성화합니다. 요청 수준 통계는 검색 요청이 서로 다른 검색 단계에서 얼마나 오래(총) 소요되는지 추적합니다. Nodes Stats API를 사용하여 이러한 카운터를 검색할 수 있습니다. 기본값은 false입니다.

하이라이트 설정

search.highlight.term_vector_multi_value (정적, 불린): 다중 값 필드의 값 전체에서 스니펫을 하이라이트하도록 지정합니다. 기본값은 true입니다.

실험적 설정

search.max_aggregation_rewrite_filters (동적, 정수): 집계 중에 허용되는 재작성 필터의 최대 수를 결정합니다. 집계에 대한 필터 재작성 최적화를 비활성화하려면 이 값을 0으로 설정하세요. 이는 실험적 기능이며 향후 버전에서 변경되거나 제거될 수 있습니다.

search.dynamic_pruning.cardinality_aggregation.max_allowed_cardinality (동적, 정수): 카디널리티 집계에서 동적 가지치기를 적용하는 임계값을 결정합니다. 필드의 카디널리티가 이 임계값을 초과하면 집계가 기본 방법으로 되돌아갑니다. 이는 실험적 기능이며 향후 버전에서 변경되거나 제거될 수 있습니다.

search.keyword_index_or_doc_values_enabled (동적, 불린): 키워드 필드에서 multi_term 쿼리를 실행할 때 인덱스 또는 doc values를 사용할지 여부를 결정합니다. 기본값은 false입니다.

Point in Time 설정

PIT 설정에 대한 정보는 PIT 설정을 참조하세요.

정적 및 동적 설정에 대한 자세한 내용은 OpenSearch 구성 문서를 참조하세요.


핵심 검색 제어:

  • 집계 버킷 수 제한
  • 부분 결과 허용 여부
  • 비용이 많이 드는 쿼리 제어

타임아웃 관리:

  • 요청 수준 타임아웃 설정
  • 샤드 수준 검색 타임아웃
  • 자동 요청 취소 메커니즘

Keep Alive 및 컨텍스트 관리:

  • 스크롤 및 PIT 검색을 위한 컨텍스트 유지 시간
  • 주기적인 컨텍스트 정리 간격
  • 최대 허용 keep alive 시간

성능 최적화:

  • 저수준 요청 취소로 쿼리 확장 단계에서도 타임아웃 적용
  • 스크롤 컨텍스트 수 제한
  • 단계별 성능 통계 수집

실험적 기능:

  • 집계 필터 재작성 최적화
  • 동적 가지치기 임계값 설정
  • 키워드 필드 쿼리 최적화

이러한 설정들을 통해 OpenSearch의 검색 성능, 리소스 사용량, 응답성을 세밀하게 조정하여 다양한 사용 사례와 성능 요구사항에 맞춘 최적화가 가능합니다.

profile
행복합시다~

0개의 댓글