검색 쿼리 구성

원본 보기

검색 쿼리 구성

이 페이지는 검색 활용 사례에 초점을 맞춥니다. 모든 활용 사례를 아우르는 Elastic 쿼리 언어 개요는 전체 개요를 참조하세요.

어떤 검색 방식을 사용해야 할지 정했다면, 이제 검색 쿼리를 만들고 테스트할 수 있습니다. Elasticsearch는 검색 로직을 표현하는 데 도움이 되는 여러 쿼리 인터페이스를 제공합니다.

인터페이스 엔드포인트 설명
Query DSL _search Elasticsearch 고유의 JSON 기반 원조 쿼리 언어입니다. 표현력이 뛰어나고 모든 클라이언트 라이브러리에서 폭넓게 지원됩니다.
Retrievers _search 단일 요청으로 다단계 검색 파이프라인을 구성할 수 있는 조합형 _search API 구문입니다. Query DSL 위에 구축되었습니다.
ES|QL _query SQL과 유사한 구문을 가진 파이프 방식 쿼리 언어로, 새로운 컴퓨트 아키텍처 위에 구축되었습니다. 전문 검색, 시맨틱 검색, 하이브리드 검색, 재순위화, 텍스트 생성을 지원합니다.

이러한 쿼리 인터페이스는 서로 배타적인 것이 아니라 상호 보완적입니다. 구체적인 요구사항에 따라 애플리케이션의 부분마다 서로 다른 인터페이스를 사용할 수 있습니다. 이러한 유연성 덕분에 요구사항이 변화함에 따라 새로운 인터페이스를 점진적으로 도입할 수 있습니다.

다음 지침을 참고해 활용 사례에 가장 적합한 인터페이스를 선택하세요.

다음이 필요할 때 Query DSL을 선택하세요.

  • 개별 쿼리 절, 점수 산정, 부스팅에 대한 세밀한 제어
  • 가장 폭넓은 에코시스템 지원: 모든 Elasticsearch 클라이언트, 도구, 통합이 Query DSL과 함께 동작합니다
  • 다단계 검색 없이 match, bool, term 쿼리 같은 단일 단계 쿼리

Query DSL은 기반이 되는 쿼리 언어이며, 특히 단일 검색 전략을 사용하는 경우처럼 단순한 검색 쿼리에는 여전히 올바른 선택입니다.

다음이 필요할 때 retrievers를 선택하세요.

  • 단일 _search 호출로 다단계 검색 파이프라인 구성(예: 검색, 재순위화, 다양화)
  • RRF 또는 선형 결합을 사용해 여러 검색 전략 조합
  • text_similarity_reranker retriever로 시맨틱 재순위화 적용
  • 어휘 필드와 시맨틱 필드에 걸친 간단한 하이브리드 검색과 자동 점수 정규화를 위해 다중 필드 쿼리 형식 사용

Retrievers는 Query DSL을 감싸면서 조합 가능성을 더합니다. BM25와 벡터 검색을 결합하거나 재순위화 단계를 추가하는 등 검색이 여러 검색 단계를 포함한다면, retrievers를 사용해 전체 파이프라인을 선언적으로 표현할 수 있습니다.

다음이 필요할 때 ES|QL을 선택하세요.

  • FORK/FUSE를 사용한 하이브리드 검색, RERANK를 사용한 재순위화, COMPLETION을 사용한 텍스트 생성을 포함해 파이프 구문으로 엔드투엔드 검색 쿼리 구축
  • 단일 쿼리에서 검색과 집계, 통계 또는 기타 데이터 변환 결합
  • Kibana 또는 API에서 익숙한 SQL 유사 구문으로 데이터를 대화식으로 탐색

ES|QL은 워크플로가 검색을 넘어 확장될 때 적합합니다. 예를 들어 단일 파이프 쿼리에서 검색하고, 재순위화하고, 결과를 요약할 수 있습니다.

다음 표는 각 인터페이스에서 사용할 수 있는 기능을 정리한 것입니다.

기능 Query DSL Retrievers ES|QL
전문 검색(BM25) 지원 지원 지원
시맨틱 / 벡터 검색 지원 지원 지원
하이브리드 검색(점수 결합) - 지원(RRF, 선형) 지원(FORK/FUSE)
시맨틱 재순위화 - 지원(text_similarity_reranker) 지원(RERANK)
결과 다양화(MMR) - 지원(diversify) 지원(MMR)
다중 필드 쿼리 형식 - 지원 -
집계 지원 지원 지원
텍스트 생성(LLM) - - 지원(COMPLETION)
파이프 변환 - - 지원
참고

Elasticsearch REST API를 사용하면 Elasticsearch 클라이언트 라이브러리를 포함한 모든 HTTP 클라이언트로, 또는 Console에서 직접 데이터를 검색할 수 있습니다. UI에서 Discover를 사용해 검색을 실행할 수도 있습니다.

실습형 퀵스타트 가이드로 시작하거나 Python 노트북을 확인해 보세요.