JSCODE Logo
프로그래밍 과외블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[실습] 특정 조건 상위 노출 / 오타 허용 검색 / 하이라이팅 처리 / 페이지네이션

JSCODE 박재성
JSCODE 박재성
2025-12-06
author
JSCODE 박재성
category
Elasticsearch
createdAt
Dec 6, 2025
series
실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
slug
exercise-filtering-and-scoring
type
post
updatedAt
Dec 6, 2025 04:48 AM

✅ 요구사항 반영하기

되도록이면 검색 결과 중 평점이 4.0이 넘는 상품을 상위에 노출시킬 수 있도록 한다.
검색어에 어느 정도 오타가 있더라도 유사한 상품을 조회할 수 있어야 한다.
  • ex) samsung notebook이라는 상품을 simsung notebook이라고 검색해도 조회가 돼야 한다.
상품명에서 일치하는 검색 키워드는 하이라이팅 처리( <b></b>)를 해야 한다.
상품이 5개씩 조회되도록 페이지네이션 해야 한다.
 
  1. 되도록이면 평점이 4.0이 넘는 상품을 상위 노출 시키기
    1. 이 기능을 구현하기 위해서는 bool 쿼리의 should를 활용하면 된다.
      GET /products/_search { "query": { "bool": { "must": { "multi_match": { "query": "LG 냉장고", "fields": [ "name^3", "description^1", "category^2" ] } }, "filter": [ { "term": { "category.raw": "가전제품" } }, { "range": { "price": { "gte": 10000, "lte": 50000 } } } ], "should": [ { "range": { "rating": { "gt": 4.0 } } } ] } } }
       
  1. 어느 정도 오타가 있더라도 검색되게 만들기
    1. 어느 정도 오타가 있더라도 검색이 되게 만드려면 fuziness를 활용하면 된다.
      GET /products/_search { "query": { "bool": { "must": { "multi_match": { "query": "마전제품", "fields": [ "name^3", "description^1", "category^2" ], "fuzziness": "AUTO" } }, "filter": [ { "term": { "category.raw": "가전제품" } }, { "range": { "price": { "gte": 10000, "lte": 50000 } } } ], "should": [ { "range": { "rating": { "gt": 4.0 } } } ] } } }
       
  1. 상품명에서 일치하는 검색 키워드는 하이라이팅 처리( <b></b>) 하기
    1. GET /products/_search { "query": { "bool": { "must": { "multi_match": { "query": "삼성", "fields": [ "name^3", "description^1", "category^2" ], "fuzziness": "AUTO" } }, "filter": [ { "term": { "category.raw": "가전제품" } }, { "range": { "price": { "gte": 10000, "lte": 50000 } } } ], "should": [ { "range": { "rating": { "gt": 4.0 } } } ] } }, "highlight": { "fields": { "name": { "pre_tags": ["<b>"], "post_tags": ["</b>"] } } } }
 
  1. 상품이 5개씩 조회되도록 페이지네이션 처리하기
    1. GET /products/_search { "query": { "bool": { "must": { "multi_match": { "query": "삼성", "fields": [ "name^3", "description^1", "category^2" ], "fuzziness": "AUTO" } }, "filter": [ { "term": { "category.raw": "가전제품" } }, { "range": { "price": { "gte": 10000, "lte": 50000 } } } ], "should": [ { "range": { "rating": { "gt": 4.0 } } } ] } }, "highlight": { "fields": { "name": { "pre_tags": ["<b>"], "post_tags": ["</b>"] } } }, "from": 0, // 몇 번째 데이터부터 조회할 건지 = (페이지 번호 - 1) x size "size": 5 // 페이지당 몇 개의 데이터를 조회할 지 }
 
 
👨🏻‍🏫
검색 기능의 요구 사항을 전부 만족시켰다. 그럼 다음 기능인 자동 완성 기능의 요구사항을 만족시켜보자.
author
JSCODE 박재성
category
Elasticsearch
createdAt
Dec 6, 2025
series
실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
slug
type
series-footer
updatedAt
Dec 6, 2025 05:12 AM
📎
이 글은 실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편) 강의의 수업 자료 중 일부입니다.