Elastic Search에 대해서 지속적으로 포스팅을 남겨보려 합니다.

     

    입문자도 알아들 수 있을 만큼 복습하고 정리할겸 최대한 자세히 포스팅을 하도록하겠습니다.
    틀린 부분이라던지 고쳤으면 하는 부분이 있다면 댓글로 남겨주세요 (๑•̀ㅁ•́)ฅ✧!

     

    엘라스틱 서치, ES, Elastic, Elastic Search 처음 접했을 땐 단순 nosql, big data엔진으로만 알았던 엘라스틱서치
    많이 부족하지만 제가 배웠던 토대로 꼼꼼히 작성해보도록 하겠습니다.


     

    우선 Elastic Searh란?

    • 고가용성의 확장 가능한 오픈소스
    • 검색엔진
    • 분석엔진
    • (no-sql 처럼 사용 가능)

    Elastic Search가 무엇이냐 하면 크게 위와같은 4가지 특징으로 들 수 있을 것 같습니다.
    사용 용도에 따라 다르겠지만 크게는 2가지 넓게 바라보면 3가지 정도로 쓰이는 것 같습니다.

     

    + 참고로 고가용성 (HA : High Availability)이란? 

    ...더보기

    " 서버, 프로그램등의 정보시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 의미한다. " 
    라고 wikipedia에 나와있지만
    쉽게말해서 프로그램이 정상적으로 고장안 나고 오래 운영(사용) 되는것이 고가용성이라고 이해하면 좋을 것 같습니다.

     

     

    검색엔진으로 사용되는 Elastic Search

    검색엔진으로 사용되는 ES(Elastic Search)를 알려면 먼저 Lucene(루씬)을 알아야합니다.
    루씬 기반으로 개발 된 서비스이기에 Lucene과 ES 각각의 큰 특징들을 알아보겠습니다.

     

    Lucene (루씬)

    • Java 언어로 이뤄짐
    • Apache 재단 검색엔진 상위 프로젝트
    • Doug Cutting (하둡 창시자)에 의해 개발
    • Apache 라이센스 배포

     

    Elastic Search (엘라스틱 서치)

    • Shay Banon이 Lucene기반으로 개발
    • 똑같이 Java 언어로 이뤄짐
    • Apache 2.0 라이센스 의거
    • HTTP Web 인터페이스 지원
    • Json 형태의 도큐먼트 지원
    • 준 실시간 분산형 검색엔진

     

     

    분석엔진으로 사용되는 Elastic Search

    분석엔진으로 사용되는 ES를 사용하려면 몇가지 솔루션 추가로 분석 엔진으로 사용이 가능합니다.
    이 몇가지 솔루션이 추가된 구조(스택)을 ELK라고 칭합니다.


    로그 분석를 위해 다음과 같은 ELK(Elastic, LogStash, Kibana) 스택이 사용됩니다.

     

    ELK stack - beats 없는 elk 그림:(

    • Beats (비츠) = 로그를 Elastic나 LogStash로 전달 
      • 여러 (로그, 데이터)종류에 따라 각각의 Beats 존재
      • 로그나 데이터 수집 용도
    • Log Stash (로그 스태쉬) = 로그를 수집 파싱이나 필터링 기능 수행
      • 때에 따라 데이터 수집 용도로 쓰일 수 있음
      • 필터링 기능
      • eg. 필터링 = 비정형화된 데이터들을 정형화 (=통일성 없는 데이터들을 통일성 있게) 
    • Elastic Search (엘라스틱 서치) = 검색, 분석을 할 수 있도록 Analyze를 거쳐 데이터 저장
      • 정형화된 데이터 저장
    • Kibana (키바나) = 저장(수집)된 ElasticSearch 데이터를 통계/집계해 시각화 제공
      • 시각화 Tool
      • 모니터링 가능한 대시보드 UI 제공

     

     

    NO-SQL 처럼 사용가능 한 Elastic Search

    다음 포스팅에 자세히 얘기할 예정인데 가볍게 말하자면
    ES에는 저장되는 데이터 단위가 문서(doc)단위로 저장된다.
    (cf. RDB로 말하면 한 행(row))

     

    ES를 문서를 추가(indexing)할 때 id를 자동 or 수동으로 설정할수있는데
    이 때 id를 수동으로 사용자가 지정할 경우 No-SQL처럼 사용할 수 있다라는 뜻이다.

     

    하지만 Elastic Search에서 말하는 색인(indexing) 최적화를 위해선
    id를 수동(PUT)으로 인덱싱하는것 보다 자동(POST)로 생성하는것을 권고 라고 합니다.

    그래서 nosql용도로만 ES를 쓰기엔 아깝다는 의견이 있는데요.
    이 부분에 대해선 제가 좀 더 공부해보고 포스팅하도록 하겠습니다(つ﹏<。)

    cf. 수동으로 id를 넣어 인덱싱 할 경우
    해당 id의 문서가 있는지 먼저 체크를 하기에 문서가 많아지면 많아 질 수록 부하가 커진다고 합니다.

     

     

    이렇게 ES가 무엇인지
    각 용도에 따라 어떠한 특징을 가지고있는지 가볍게 알아봤는데요.

    ES는 크게 검색엔진과 분석엔진으로 사용되고 있다는 점 상기 시키며
    다음번 2. Elastic Search 용어 정리 로 찾아뵙도록 하겠습니다.

     

    감사합니다.

    'Development - Search Engine > Elastic Search' 카테고리의 다른 글

    3. Elastic Search 개념 정리  (0) 2019.07.15
    2. Elastic Search 용어 정리  (0) 2019.07.15
    Posted by 개발자 다보