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

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

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

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

여러 필드(ex. 제목, 내용)에서 검색 키워드가 포함된 데이터를 조회하고 싶을 때 (multi_match)

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

✅ 여러 필드에서 검색 키워드가 포함된 데이터를 조회하고 싶을 때 (multi_match)

구글에서 특정 키워드로 검색해보면 사이트의 제목(title) 뿐만 아니라 내용(content)을 포함해서 검색한다.
notion image
이와 같이 여러 필드에서 검색 키워드(엘라스틱서치 적용 후기)가 포함된 데이터를 조회하고 싶을 때 어떻게 쿼리를 작성하면 되는 지 살펴보자.
 

✅ 실습

  1. 인덱스 생성
    1. DELETE /boards PUT /boards { "mappings": { "properties": { "title": { "type": "text", "analyzer": "nori" }, "content": { "type": "text", "analyzer": "nori" } } } }
       
  1. 데이터 삽입
    1. // title, content 둘 다에 키워드 포함 POST /boards/_doc { "title": "엘라스틱서치 적용 후기", "content": "회사 프로젝트에 엘라스틱서치를 적용한 후기를 공유합니다." } // title에만 키워드 포함 POST /boards/_doc { "title": "엘라스틱서치를 사용해보니", "content": "검색 엔진 도입 후 성능이 향상되었습니다." } // content에만 키워드 포함 POST /boards/_doc { "title": "검색엔진 도입 사례", "content": "이번 프로젝트에 엘라스틱서치를 적용한 후 많은 개선 효과가 있었습니다." } // title, content 둘 다 포함 안 됨 POST /boards/_doc { "title": "레디스 캐시 사용기", "content": "서비스 속도 개선을 위해 캐시 시스템을 사용했습니다." }
       
  1. 검색하기
    1. GET /boards/_search { "query": { "multi_match": { "query": "엘라스틱서치 적용 후기", "fields": ["title", "content"] } } }
응답값
{ "took": 33, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 3, "relation": "eq" }, "max_score": 3.79424, "hits": [ // title, content 둘 다에 키워드 포함 { "_index": "boards", "_id": "2k-SmJYBWhYNXJPWbr6u", "_score": 3.79424, "_source": { "title": "엘라스틱서치 적용 후기", "content": "회사 프로젝트에 엘라스틱서치를 적용한 후기를 공유합니다." } }, // content에만 키워드 포함 { "_index": "boards", "_id": "3E-SmJYBWhYNXJPWd740", "_score": 1.7749425, "_source": { "title": "검색엔진 도입 사례", "content": "이번 프로젝트에 엘라스틱서치를 적용한 후 많은 개선 효과가 있었습니다." } }, // title에만 키워드 포함 { "_index": "boards", "_id": "20-SmJYBWhYNXJPWc75z", "_score": 1.3862942, "_source": { "title": "엘라스틱서치를 사용해보니", "content": "검색 엔진 도입 후 성능이 향상되었습니다." } } ] } }
  • title 또는 content 필드에 검색 키워드가 포함된 데이터를 조회했다.
    • title이랑 content 둘 다에 키워드가 포함되지 않은 데이터는 제외됐다.
  • 검색 키워드와 데이터의 관련성을 score로 점수를 매겨 조회했다.
    • 검색 키워드가 문서에서 자주 등장할 수록 점수가 높게 책정된다.
    • 전체 문서 중 검색어가 희귀한 검색어가 일치할 수록 점수가 높게 책정된다.
    • 필드 값의 길이가 작은데도 불구하고 키워드가 등장했다면 점수가 높게 책정된다.
 
  1. 가중치 활용해서 검색해보기
    1. 내용(content)에만 키워드가 포함된 글보다 제목(title)에만 키워드가 포함된 글을 더 상위노출 시키고 싶을 수 있다. 즉, 제목(title)에 검색 키워드가 등장한다면 더 관련성 높은 데이터라고 판단하고 싶을 수 있다. 그럴 때 가중치를 활용한다.
      GET /boards/_search { "query": { "multi_match": { "query": "엘라스틱서치 적용 후기", "fields": ["title^2", "content"] // title에 2배 더 높은 score를 부여 } } }
       
      응답값
      { "took": 10, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 3, "relation": "eq" }, "max_score": 7.58848, "hits": [ // title, content 둘 다에 키워드 포함 { "_index": "boards", "_id": "2k-SmJYBWhYNXJPWbr6u", "_score": 7.58848, "_source": { "title": "엘라스틱서치 적용 후기", "content": "회사 프로젝트에 엘라스틱서치를 적용한 후기를 공유합니다." } }, // title에만 키워드 포함 { "_index": "boards", "_id": "20-SmJYBWhYNXJPWc75z", "_score": 2.7725885, "_source": { "title": "엘라스틱서치를 사용해보니", "content": "검색 엔진 도입 후 성능이 향상되었습니다." } }, // content에만 키워드 포함 { "_index": "boards", "_id": "3E-SmJYBWhYNXJPWd740", "_score": 1.7749425, "_source": { "title": "검색엔진 도입 사례", "content": "이번 프로젝트에 엘라스틱서치를 적용한 후 많은 개선 효과가 있었습니다." } } ] } }
      의도한 순서대로 게시글이 잘 조회됐다.
 
 
👨🏻‍🏫
여러 필드에서 검색 키워드가 포함된 데이터를 조회할 때는 multi_match 키워드를 사용하면 된다. 다음 강의에서는 다른 검색 기능을 배워보자.
 
author
JSCODE 박재성
category
Elasticsearch
createdAt
Dec 6, 2025
series
실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
slug
type
series-footer
updatedAt
Dec 6, 2025 05:12 AM
📎
이 글은 실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편) 강의의 수업 자료 중 일부입니다.