티스토리 뷰
728x90
이 개념을 이해하지 못하면
Elasticsearch를 비싼 WHERE 절 엔진으로 쓰게 됩니다.
이해하면, Lucene 기반 검색 엔진으로 제대로 쓰게 됩니다.
- match = 관련도(_score)를 계산하는 검색
- filter = 조건 만족 여부만 보는 필터
1. match
정의
문서가 검색어와 얼마나 잘 맞는지를 계산하는 쿼리
{
"query": {
"match": {
"content": "Shay Banon"
}
}
}
실행 방식
- text 필드 기준
- 분석기(analyzer)로 토큰화
- _score 계산
- 결과는 관련도 순 정렬
내부 동작
- Elasticsearch는
Apache Lucene의 BM25 알고리즘으로 점수를 계산합니다. - 즉, “같다 / 다르다”가 아니라 “얼마나 비슷한가”를 계산합니다.
언제 쓰는가
- 검색창
- 자연어 검색
- “비슷한 문서”, “의미 기반 검색”이 필요한 경우
2. filter
정의
문서가 조건을 만족하느냐 / 아니냐만 판단하는 쿼리
{
"query": {
"bool": {
"filter": [
{ "term": { "status.keyword": "PUBLISHED" } },
{ "range": { "publish_date": { "gte": "2018-01-01" } } }
]
}
}
}
실행 방식
- 점수 계산 없음
- 결과는 true / false
- 캐시 가능
- 빠름
언제 쓰는가
- 상태값 (status, type)
- 날짜, 숫자 범위
- 체크박스, 드롭다운 UI 조건
- “정확히 일치해야 하는 값”
3. 핵심 차이 한 눈에 보기
| 구분 | match | filter |
| 목적 | 관련도 기반 검색 | 조건 필터링 |
| _score | 있음 | 없음 |
| 분석(analyze) | O | X (보통) |
| 정렬 | score 기준 | 별도 지정 |
| 캐시 | ❌ | ✅ |
| 역할 | 검색 엔진 | DB WHERE 절 |
4. 왜 굳이 나눠놨을까
❌ 전부 match로 쓰면
{
"query": {
"match": {
"status": "PUBLISHED"
}
}
}
- 의미 없는 score 계산
- 캐시 불가
- 성능 저하
- Elasticsearch를 비효율적인 DB처럼 사용
❌ 전부 filter로 쓰면
{
"query": {
"bool": {
"filter": [
{ "term": { "content": "Shay Banon" } }
]
}
}
}
- 자연어 검색 불가
- 관련도 개념 소멸
- 검색 품질 붕괴
5. 실무·시험 공통 정답 패턴
검색어 = match
조건 = filter
{
"query": {
"bool": {
"must": [
{ "match": { "content": "Shay Banon" } }
],
"filter": [
{ "term": { "status.keyword": "PUBLISHED" } },
{ "range": { "publish_date": { "gte": "2018-01-01" } } }
]
}
}
}
- match → 점수 계산
- filter → 결과 범위 제한
- 가장 흔하고, 가장 안전한 실무 구조
최종 요약
- match는 “얼마나 잘 맞는가”
- filter는 “맞냐 아니냐”
이 기준으로 보면,
Elasticsearch를 검색 엔진으로 쓰고 있는지,
아니면 DB 필터로 낭비하고 있는지가 바로 보입니다.
728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 리액트
- transformer
- gradientclipping
- async
- 인스턴스 구조
- 리액트 폴더구조
- 콜백callback
- AI
- 데이터옵션
- 로짓함수
- 프론트엔드
- 인스턴스 생명주기
- 코랩 한글깨짐
- 사전학습모델
- PROMISE
- ML
- 컴포넌트간통신
- 이벤트유효성
- NLP
- defaultparameter
- 코랩 워드클라우드 한글깨짐
- 이벤트에미터
- 코랩 워드클라우드
- dl
- 사용자정의이벤트
- KoELECTRA
- 컴포넌트간데이터전달
- Await
- 자연어처리
- 인스턴스 옵션
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함