728x90
반응형
SMALL
ElasticSearch에서 데이터를 추가하거나 삭제, 수정하는 과정에서는 다양한 과정이 거쳐진다. 여기서 다룰 것은 기본적인 CRUD 명령어와 내부 옵션에 대한 설명이다.
1. 인덱스 생성 / 삭제
- 인덱스 생성
PUT /products
PUT /boards
PUT /products_reviews
- → 새로운 인덱스를 생성 (테이블 생성과 유사).
- → settings 와 mappings 지정 가능.
- 인덱스 삭제
DELETE /products
DELETE /boards
- → 인덱스를 완전히 삭제 (문서 + 매핑 모두 제거).
2. 매핑(Mapping) 정의
- 매핑 추가/수정
PUT /products/_mapping
POST /products/_mapping
- → 기존 인덱스에 필드 타입 정의 (단, 기존 필드 타입 변경은 불가)
- 인덱스 생성 시 매핑 정의
PUT /products
{
"mappings": {
"properties": {
"name": { "type": "text" }
}
}
}
- 다양한 필드 타입 예시
- keyword: 정확 매칭/집계용
- text: 풀 텍스트 검색용
- integer, long, double: 숫자
- boolean: true/false
- date: 날짜
3. 문서(Document) 조작
- 문서 생성
POST /products/_doc
{ "name": "Apple 2025 맥북 에어 13 M4" }
- ID 지정하여 생성
POST /products/_create/1
{ "name": "..." }
- → 존재하지 않는 경우만 생성 (중복 ID는 에러)
- 문서 전체 교체
PUT /products/_doc/1
{ "name": "sunro2" }
- → 해당 문서 전체를 덮어씀.
- 문서 부분 수정
POST /products/_update/2
{
"doc": { "age": 45 }
}
- → 해당 필드만 변경.
4. 조회 / 검색
- 단건 조회
GET /products/_doc/1
- → _id=1 문서 반환
- 전체 검색
GET /products/_search
- 조건 검색(match)
GET /products/_search
{
"query": {
"match": { "name": "맥북 13 에어 M4" }
}
}
- → analyzer로 토큰화된 단어 단위 매칭.
- 조건 검색 예시
- "삼성" → "Samsung"과 동의어 매칭 가능 (synonym filter 적용 시)
- "run" → "running"과 매칭 가능 (stemmer 적용 시)
5. 텍스트 분석(Analyze API)
- 기본 analyzer 확인
GET /_analyze
{
"text": "Apple 2025 맥북 에어 13 M4 10코어",
"analyzer": "standard"
}
- 사용자 정의 analyzer 확인
GET /products/_analyze
{
"field": "name",
"text": "Samsung Notebook"
}
- → 인덱스에서 설정한 analyzer 기준으로 토큰화 결과 확인.
- char_filter / tokenizer / filter 직접 지정
GET /_analyze
{
"text": "백화점에서 친구를 만났다.",
"tokenizer": "nori_tokenizer",
"filter": ["nori_part_of_speech","nori_readingform","lowercase"]
}
6. 커스텀 Analyzer 설정 예시
- Lowercase 변환
"filter": ["lowercase"]
- Stopwords 제거
"filter": ["stop"]
- Stemming (동사 변형 통합)
"filter": ["stemmer"]
- Synonym (동의어 처리)
"filter": {
"product_synonym_filter": {
"type": "synonym",
"synonyms": ["notebook, 노트북, 랩탑, 휴대용 컴퓨터, laptop"]
}
}
- 한글 형태소 분석기 (Nori)
"tokenizer": "nori_tokenizer",
"filter": ["nori_part_of_speech","nori_readingform","lowercase"]
정리
- 인덱스 관리: PUT / {index}, DELETE / {index}, GET / {index}
- 매핑 관리: PUT|POST /{index}/_mapping
- 문서 CRUD: POST _doc, PUT _doc/{id}, POST _update/{id}, GET _doc/{id}
- 검색: _search (match, match_all 등)
- 텍스트 분석: _analyze, 커스텀 analyzer
- 고급 분석: stopwords, stemming, synonym, nori 형태소 분석기
728x90
반응형
SMALL
'ElasticSearch' 카테고리의 다른 글
| [ELK / term] 특정 값과 정확하게 일치하는 데이터를 조회하고 싶을 때 (2) | 2025.09.27 |
|---|---|
| [ELK / match] 검색 키워드가 포함된 데이터를 조회하고 싶을 때 (0) | 2025.09.26 |
| [ElasticSearch] ElasticSearch 개념 (0) | 2025.02.28 |
| [Logging] ElasticSearch와 Logstash, Kibana를 사용한 로그 모니터링 (1) | 2025.02.08 |