전체 그래프
Elasticsearch

Search APIs

data-engineeringelasticsearchsearchapi

상위: Elasticsearch

요약

Elasticsearch의 검색 API는 URI 검색과 Request Body 검색(Query DSL) 두 가지 방식을 지원합니다.

검색 동작 원리

  1. 클라이언트가 Coordinating Node에 요청.
  2. Coordinating Node가 관련 샤드(Primary or Replica)에 요청 분산.
  3. 각 샤드가 검색 수행 후 결과(ID, Score) 반환.
  4. Coordinating Node가 결과 취합, 정렬, 상세 정보 조회(Fetch) 후 클라이언트에 응답.

URI Search

  • URL 쿼리 스트링에 검색 조건을 포함합니다.
  • 장점: 간단하고 빠름.
  • 단점: 복잡한 쿼리 표현 불가.
  • 예시: GET /products/_search?q=brand:Samsung

Request Body Search

  • JSON 본문에 쿼리를 작성합니다 (Query DSL).
  • 장점: 복잡하고 정교한 쿼리 가능.
  • 예시:
GET /products/_search
{
  "query": {
    "match": { "brand": "Samsung" }
  }
}

주요 파라미터

검색 파라미터

파라미터기본값설명
q-검색할 쿼리 문자열
df-기본 검색 필드 지정
analyzer-분석기 지정
default_operatorOR검색어 간 기본 연산자 (AND/OR)

결과 조정 파라미터

파라미터기본값설명
_sourcetrue전체 필드 표시 여부
sort-정렬 기준 설정
from0시작 문서 지정 (페이지네이션)
size10검색 결과 개수 제한

검색 결과 구조

{
  "took": "실행 시간(ms)",
  "_shards": {
    "total": "전체 샤드 수",
    "successful": "성공한 샤드 수"
  },
  "hits": {
    "total": "검색된 문서 수",
    "max_score": "최고 점수",
    "hits": [ ... ]
  }
}

멀티테넌시 (Multi-tenancy)

여러 인덱스를 동시에 검색할 수 있습니다.

GET products,services/_search
{
  "query": { "match_all": {} }
}

활용:

  • 날짜별 인덱스 분리 → 검색 범위 최소화
  • 로그/트래픽 등의 시계열 데이터에 적합