데이터 분석을 위한 ElastiSearch의 Query

2025. 9. 26. 00:50·ElasticSearch
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
'ElasticSearch' 카테고리의 다른 글
  • [ELK / term] 특정 값과 정확하게 일치하는 데이터를 조회하고 싶을 때
  • [ELK / match] 검색 키워드가 포함된 데이터를 조회하고 싶을 때
  • [ElasticSearch] ElasticSearch 개념
  • [Logging] ElasticSearch와 Logstash, Kibana를 사용한 로그 모니터링
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (329)
      • 면접 준비 (45)
        • OS (6)
        • Spring Security (0)
        • Java (3)
        • DB (11)
        • Network (3)
      • ElasticSearch (5)
      • Kafka (5)
      • Spring (60)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (39)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      리눅스마스터2급정리
      자바 반복문
      JavaScript
      redis
      자바스크립트
      자바 면접
      Spring
      HTML
      CSS
      자바 면접질문
      Til
      jsp request
      레디스
      스프링프레임워크
      java
      자바기초
      리눅스마스터2급
      Spring Data Redis
      Springframework
      springsecurity
      자바
      리눅스
      redis 채팅
      백준
      JSP
      jsp기초
      spring redis
      JS
      자바 알고리즘
      프로그래머스
    • 최근 댓글

    • 최근 글

    • 250x250
    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    데이터 분석을 위한 ElastiSearch의 Query
    상단으로

    티스토리툴바