
Elasticsearch 검색에서 확률 사용하기
두줄요약
Elasticsearch에서 문서별 광고 할당 확률을 구현하는 script와 function_score 방식을 비교했습니다. random_score·decay 조합의 구현 원리와 성능 검증 필요성을 설명합니다.
문제 상황
- 광고 요청별 문서 할당 확률 제어 필요
- 요청 시점의 동적 확률 정보로 인한 사전 색인 불가
- 애플리케이션 난수 기반 range 쿼리의 문서별 독립 확률 보장 실패
해결 방법
- Script query로 문서마다 난수를 생성해
alloc_rate와 비교 function_score의random_score,field_value_factor,min_score조합으로 확률 조건 구현- linear decay로 할당률과 반대 방향의 예산 소진 비율까지 score 변환
성능/운영 포인트
- Query Profiler 기준 linear decay 방식의 script 대비 40배 이상 최적화 사례
seed와_seq_no기반random_score적용- 인덱스 구성·접근 패턴·데이터 형태별 별도 성능 검증 필요
트레이드오프
- script 방식의 직관성과 낮은 성능
- function_score 방식의 높은 성능과 문서 score가 [0, 1) 범위로 계산되는 제약
- scoring을 사용하지 않는 filter context에서 score 제약의 영향 축소


