728x90
반응형
SMALL
검색을 할때 사용할 수 있는 속성은 match가 있습니다. match는 must와 함께 사용하고, text타입의 데이터를 조회
text는 유연한 검색에 쓰이는데 must는 score에 영향을 주기 때문
must - score에 영향을 주므로 match 사용 - text 타입 조회
filter - score에 영향을 주지 않으므로 term 또는 terms 사용 - text를 제외한 타입 조회
그럼 예시를 통해 확인해보자.
/boards라는 인덱스를 생성하기 전에 이전에 존재하는 boards를 삭제하고 새로 정의
그리고 매핑을 정의한다. 매핑에는 title이라는 데이터를 생성하고 type은 text로 설정
DELETE /boards
PUT /boards
{
"mappings": {
"properties": {
"title":{
"type": "text"
}
}
}
}
결과는 아래처럼 뜸

_doc 을 통해 새로운 title 데이터를 추가한다.
POST /boards/_doc
{
"title": "티스토리 블로그 글쓰기"
}
결과는 성공적으로 생성된것을 확인할 수 있음

다음은 _search를 통해 생성한 title을 검색해보자.
GET /boards/_search
{
"query": {
"match": {
"title": "블로그"
}
}
}
결과는 성공적으로 1개를 hit로 확인가능
참고로 이때는 nori_tokenizer가 아닌 standard를 사용중이기에 일부 단어를 포함하는 검색은 할 수 없다.

다음은 블로그의 '블로'만 포함한 단어를 찾는 쿼리이다.
GET /boards/_search
{
"query": {
"match": {
"title": "블로"
}
}
}
결과는 아까 말했듯이 블로그라는 음절이 인덱스에 저장되어 있기 때뭉네 블로는 찾을 수 없어 조회되지 않는다.

저장된 공간을 간단히 도식화하면 다음과 같다.

728x90
반응형
SMALL
'ElasticSearch' 카테고리의 다른 글
| [ELK / term] 특정 값과 정확하게 일치하는 데이터를 조회하고 싶을 때 (2) | 2025.09.27 |
|---|---|
| 데이터 분석을 위한 ElastiSearch의 Query (0) | 2025.09.26 |
| [ElasticSearch] ElasticSearch 개념 (0) | 2025.02.28 |
| [Logging] ElasticSearch와 Logstash, Kibana를 사용한 로그 모니터링 (1) | 2025.02.08 |