Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 판다스
- 케이티 에이블스쿨 6기 후기
- 앙상블
- 파이썬
- 케이티 에이블스쿨 6기 ai
- 에이블 기자단
- 케이티 에이블스쿨 6기
- kt 에이블스쿨 6기
- 오블완
- 네트워크
- 데이터 프레임
- kt 에이블스쿨 6기 미니 프로젝트
- KT 에이블스쿨
- kt aivle school
- SQLD
- ElasticSearch
- 케이티 에이블스쿨
- kt 에이블스쿨 기자단
- 케이티 에이블스쿨 6기 java
- KT AIVLE
- 엘라스틱서치
- 머신러닝
- 티스토리챌린지
- 알고리즘
- 백준
- kt 에이블스쿨 6기 ai
- kt 에이블스쿨 6기 빅프로젝트
- 프로그래머스
- 구현
- 케이티 에이블스쿨 기자단
Archives
- Today
- Total
미식가의 개발 일기
[Elasticsearch] Elasticsearch 검색 API 본문
🔍 Search API 기본 구조
_search 엔드포인트를 통해 인덱스 내 문서를 검색할 수 있다. 가장 기본적인 형태는 아래와 같다.
GET /my_index/_search
{
"query": {
"match": {
"title": "elasticsearch"
}
}
}
🧠 자주 사용하는 쿼리 종류
Elasticsearch에서 쿼리는 Query DSL(Domain Specific Language)로 작성하며,
대표적으로 match, term, bool 쿼리가 많이 사용된다.
🔹 match 쿼리 – 자연어 검색
match 쿼리는 전체 텍스트 검색(full-text search)에 사용된다. 내부적으로 분석기(analyzer)가 적용되어 입력된 문자열을 나누고, 토큰을 기준으로 검색한다.
예를 들어 "machine learning"을 입력하면 "machine", "learning" 두 단어 중 하나라도 포함된 문서를 검색한다.
한국어의 경우 형태소 분석을 통해 "머신 러닝" 등도 잘 검색된다.
"query": {
"match": {
"title": "machine learning"
}
}
🔹 term 쿼리 – 정확한 값 일치
term 쿼리는 정확히 일치하는 값만 검색할 때 사용된다. 분석기가 적용되지 않기 때문에, 일반적인 텍스트에는 잘 맞지 않고 정확한 키워드 검색에 적합하다.
"query": {
"term": {
"status": "approved"
}
}
정확히 status 필드가 "approved"인 문서만 검색한다.
만약 텍스트 필드에 term 쿼리를 쓰고 싶다면 .keyword 형태로 사용해야 한다.
"term": { "title.keyword": "머신 러닝" }
🔹 bool 쿼리 – 조건 조합(AND / OR / NOT)
bool 쿼리는 여러 쿼리를 조합해서 사용할 수 있다. 대표적으로 must, should, must_not, filter 키워드를 포함한다.
must | 모두 일치해야 함 (AND) |
should | 하나 이상 일치 (OR) |
must_not | 일치하면 제외 (NOT) |
filter | 점수 계산 없이 필터링 (성능 ↑) |
"query": {
"bool": {
"must": [
{ "match": { "title": "AI" } },
{ "term": { "author.keyword": "강민지" } }
],
"must_not": [
{ "term": { "category.keyword": "스포츠" } }
],
"filter": [
{ "range": { "publish_year": { "gte": 2020 } } }
]
}
}
⚙️ 주요 검색 옵션
query | 검색 조건 설정 |
size | 가져올 문서 개수 설정 (기본: 10) |
from | 페이지네이션 시작점 설정 |
_source | 검색 응답에 포함시킬 필드 지정 |
sort | 검색 결과 정렬 |
highlight | 검색어 하이라이팅 표시 |
aggs | 통계 및 집계 분석 |
post_filter | 집계 유지한 채 결과 필터링 |
track_total_hits | 총 문서 수 계산 방식 조절 |
explain / profile | 쿼리 설명 및 성능 분석 도구 |
예를 들어, 다음과 같이 검색 결과를 정렬하고 일부 필드만 응답받을 수 있다.
{
"query": { "match": { "title": "AI" } },
"_source": ["title", "author"],
"size": 5,
"sort": [{ "publish_date": "desc" }]
}
반응형
'Elasticsearch' 카테고리의 다른 글
[Elasticsearch] Bulk API: Elasticsearch 대량 색인 작업 (0) | 2025.07.13 |
---|---|
[Elasticsearch] 엘라스틱서치 인덱싱 (1) | 2025.07.06 |
[Elasticsearch] 엘라스틱서치, 키바나 설치하기: Ubuntu(WSL), Docker 환경 (1) | 2025.07.06 |
[Elasticsearch] 엘라스틱서치란? (2) | 2025.07.05 |