본문 바로가기
Elastic Seaerch

ElasticSearch란?

by yang sing 2022. 5. 20.

ElasticSearch(ES)란?

 - ElasticSearch는 Apache Lucene에서 기반이 되어 구축되어 대량의 데이터를 저장, 분석, 검색을 할 수 있는 검색 및 분석 엔진이다.

 - 대용량의 DB 데이터에서 문자열 검색의 속도 및 DB 과부하를 방지하기 위하여 사용

 - 대용량의 데이터를 분석하기 위하여 사용

 

ElasticSearch 구성 요소

1. Document (도큐먼트)

  - 실제 데이터를 저장하는 단위로 Json 형태이다.

  - 하나의 도큐먼트는 여러 필드와 값을 갖는다. (field - value)

  - 모든 도큐먼트는 반드시 하나의 인데스에 포함

  - 도큐먼트를 인덱스에 포함시키는 것을 인덱싱(indexing)이라고 표현

  - RDBMS 레코드와 비슷한 개념

 

2. Index (인덱스) 

  - 도큐먼트를 정장하는 논리적 단위

  - 하나의 인덱스에 다수의 도큐먼트가 포함

  - 동일한 인덱스에 있는 도큐먼트는 동일한 스키마를 갖는다

  - 스키마에 따라 인덱스를 구분

  - RDBMS 테이블과 비슷한 개념

 

Index의 생성

  - Postman 기준 회원명, 주소, 가입일의 정보를 담고 있는 index의 생성 방법

  - PUT Method를 사용

  - `ES접근 IP 주소/인덱스명/`

{
  "mappings": {
    "properties": {
      "name": {
        "type": "keyword"
      },
      "addr": {
        "type": "text"
      },
      "regDateTime": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      }
    }
  }
}

 

 * MySQL 과 엘라스틱서치의 비교

MySQL Elastic search
테이블 인덱스
레코드 도큐먼트
컬럼 필드
스키마 매핑

 

Elastic search 도큐먼트의 CRUD

 1. 도큐먼트 등록

   - PUT Method를 사용

   - ‘ES접근 IP 주소/인덱스명/_doc/도큐먼트 고유 아이디’

   - 기존 필드 외 새로운 필드를 추가해도 인덱싱이 가능하다.

   - 간단한 형변환을 자동으로 해준다 ex) “10” -> 10 / 10.0 -> 10 등

   - 같은 도큐머트 아이디가 있으면 insert가 아닌 기존 도큐먼트에 데이터가 덮어 씌워진다.

{
    "name" : "test",
    "addr" : "address",
    "regDate" : "2022-05-20 16:00:22"
}

 

 2. 도큐먼트 조회

   - GET Method를 사용

   - ‘ES접근 IP 주소/인덱스명/_doc/도큐먼트 고유 아이디’

   - 도큐먼트 고유 아이디를 통해 특정 도큐먼트 데이터를 가져온다 

 

*  ‘ES접근 IP 주소/인덱스명/_doc/도큐먼트 고유 아이디’ 를 통해 가져온 데이터 출력 결과

{
    "_index": "estest",
    "_type": "_doc",
    "_id": "1",
    "_version": 1,
    "_seq_no": 0,
    "_primary_term": 1,
    "found": true,
    "_source": {
        "name": "test",
        "addr": "address",
        "regDate": "2022-05-20 16:00:22"
    }
}

  

 3. 도큐먼트 검색 

   - GET Method를 사용

   - ‘ES접근 IP 주소/인덱스명’/_search

   - 엘라스틱 search DSL 쿼리를 사용해서 모든 도큐먼트를 가져온다.

   - match 내부에 검색하고자 하는 도큐먼트 필드명과 검색어를 작성.

   - size는 검색 결과 수를 지정한다.

{
    "query":{
        "match":{
            "name":"test"
        }
    }
    , "size": 20
}

 

 

 4. 도큐먼트 수정

  - POST Method를 사용

  - ‘ES접근 IP 주소/인덱스명’/_update/‘고유 아이디’ 

  - 특정 도큐먼트의 특정 필드 값만 업데이트를 할 수 있다.  

  - 수정 작업은 비용이 많이 들어서 수정이 많은 작업에는 엘라스틱 서치를 권장하지 않는다.

 

 5. 도큐먼트 삭제

  - DELETE Method를 사용

  - ‘ES접근 IP 주소/인데스명’/_doc/‘고유 아이디’

  - 도큐먼트의 삭제

  - 수정과 마찬가지로 비용이 많이 들어가는 작업이다.

 

 

참고 도서 : 엘라스틱 스택 개발부터 운영까지 (저자 : 김준영,정상운)