ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Elasticsearch : 시작하기
    Elasticsearch 2021. 4. 2. 16:29
    728x90

    Elasticsearch

     

    • 아파치 루씬 기반의 JAVA 오픈소스 분산 검색 엔진이다.
    • DB처럼 '데이터 저장소'가 아니기 때문에, DB를 대체할 수는 없다.
    • 방대한 양의 데이터를 신속하고, 실시간으로 저장, 검색, 분석을 할 수 있다는 장점이 있다.

     

    • Elastic사의 대표 제품인 Elasticsearch, Logstash, Kibana를 ELK라고 부른다.
    • 여기에 Beats가 추가된 것을 Elastic Stack이라고 부른다.

     

    • Elasticsearch는 데이터의 CRUD를 위해 RESTful API 방식을 사용한다.
    • RESTful API 방식을 사용하여 HTTP통신 기반으로 요청을 받아 JSON 형식으로 응답한다.

     

    • 아파치 루씬
      • 검색 어플리케이션을 만드는데에 사용하는 검색 라이브러리이다.
      • 즉, 하나의 검색 '도구'이다.
      • 작은 용량의 클래스들로 매우 간단하게 구현이 가능하다.
      • 루씬은 '색인'과 '검색' 기능만을 제공하고, 이외의 필요한 기능은 직접 구현해야 한다.

     

    • RESTful API
      • HTTP의 header와 URL만 사용하여 다양한 형태의 자원을 요청할 수 있는 HTTP 프로토콜을 최대한 활용하도록 고안된 아키택쳐
      • 자원 별 고유 URL로 접근이 가능하고, HTTP 메소드인 PUT, POST, GET, DELETE를 사용하여 자원을 처리하는 시스템을 RESTful한 시스템이라고 한다.
      • 예 : curl -XGET http://localhost:9200/index_name/type/document_id -d '{json_format_data}'

     

     

     

     

     

     


     

    ELK

     

    • logstash : DB, csv 파일 등의 다양한 source log 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 Elasticsearch로 전달

     

    • elasticsearch : logstash로부터 받은 데이터를 검색, 집계하여 필요한 정보를 조회

     

    • kibana : elasticsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링

     


     

    Elasticsearch VS RDBMS

     

    RDBMS Elasticsearch
    schema mapping
    database index
    table type
    row document
    column field

     

     

     


     

     

    Elasticsearch 장점

    1.

    오픈소스 검색엔진이다.

     

    2.

    Full Text 검색이 가능하다. 내용 전체를 index해서 특정 단어가 포함된 문서 검색이 가능하다.

     

    3.

    역색인을 통해, 특정 단어를 찾을 때 문서 전체에서 찾는 것이 아닌, 안어가 포함된 문서의 위치를 알아내어 빠르게 찾을 수 있다.

     

    4.

    샤드(shard) 단위로 데이터를 분산하여 빠르게 처리한다.

     

     

     


     

     

    Elasticsearch 단점

    1.

    '거의' 실시간이다. 데이터 저장 시, 내부적으로 commit과 flush를 수행하기 때문에 약 1초 뒤부터 검색이 가능하다. 공식 문서에도 'nearly real time'이라는 표현을 사용한다.

     

    2.

    전체 클러스터의 성능을 향상시키기 위해, 비용 소모가 큰 rollback과 transaction 기능이 없다. 때문에 데이터를 저장하고 조회할 때 주의가 필요하다.

     

    3.

    document의 update 기능이 없다. update를 하려면, 기존의 document를 delete하고 새롭게 insert해야 한다.

     

    4. (개인적으로 느끼는 단점)

    모든 기능을 완벽하게 다루기에는 많은 지식(?)이 필요하다. 사실 모든 도구들이 그러하겠지만, elastic은 유독 그렇게 느껴진다.

     

     

    728x90

    댓글

kxmjhwn@gmail.com