Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

영우

엘라스틱서치란 뭘까? 본문

CS/데이터베이스

엘라스틱서치란 뭘까?

duddn 2024. 4. 12. 01:42

made by gpt

엘라스틱서치란 뭘까?

  • ELK스택의 중심에 있는 분산된 검색 및 분석엔진입니다 ELK스택은 아래에서 다시 설명하겠습니다.
  • 모든 유형의 데이터에 대해 거의 실시간 검색 및 분석을 제공합니다. 구조화된 데이터이든, 구조화되지 않은 데이터이든 빠른 검색을 지원하는 방향으로 효율적으로 저장하고 인덱싱합니다.
  • 단순한 데이터 검색을 넘어 데이터의 추세와 패턴을 발견할 수 있습니다.

주요 사용사례

  • 웹사이트 검색
  • 로깅 및 로그분석
  • 인프라 지표 및 컨테이너 모니터링

엘라스틱서치로 할 수 있는일

  • 실시간으로 1초이내에 인덱스가 생성되고 매우 빠른 전문검색을 할 수 있습니다.

  • REST API로 쉽게 데이터 인덱싱과 검색이 가능합니다.

  • 실시간으로 데이터를 분석하고 시각화 할 수 있습니다.

  • 문서를 분산해 저장합니다. 데이터가 증가함에따라 수평확장할 수 있습니다.

ELK 스택

  • 어떤방식으로 동작하나요?
    • Logstash는 데이터를 수집 및 변환하고 올바른 노드에게 전달합니다.
    • 엘라스틱서치는 수집된 데이터를 인덱싱하고 분석하고 검색합니다.
    • Kibana는 분석결과를 시각화 할 수 있습니다.
  • Logstash
    • 사용자가 데이터 소스나 유형에 관계없이 데이터를 쉽게 수집할 수 있도록 도와줍니다.
    • 사전 구축된 필터로 사용자가 일일이 정의하지 않고도 쉽게 쿼리할 수 있게함
    • 비정형 데이터를 쉽게 수집가능하게 도와줌
  • 엘라스틱서치
    • 데이터를 분석하고 저장합니다.
    • 빠른 검색을 지원합니다.
  • Kibana
    • 로그, 애플리케이션 모니터링 같은 사례에 사용되는 데이터 시각화 및 탐색도구입니다.
    • 히스토그램, 선형 그래프, 원형 차트같은 사용하기 쉬운 기능을 제공합니다.
    • 대시보드와 보고서를 쉽게 설정하고 다른사람과 공유가능합니다.

inverted index

  • 엘라스틱서치는 데이터를 저장할때 의미있는 단어를 추출해 해당 단어들로 inverted index를 생성합니다.
  • inverted index란 단어와 해당 단어를 사용하는 document를 매핑하는 index입니다. 특정 단어를 검색했을때 이를 사용하는 문서를 빠르게 찾을 수 있습니다.
  • 읽는다, 읽었다, 읽다 처럼 같은 의미가 같은 말을 형태소 분석을 통해 ‘읽다’로 통일해 인덱싱합니다.

엘라스틱서치 용어정리

  • document
    • 실제 데이터를 저장하는 단위입니다.
    • JSON형태입니다.
    • RDB의 레코드와 비슷합니다
  • shard
    • 인덱싱할때 node 내부에 논리적으로 데이터 저장공간을 나누어 shard를 만듭니다. 그리고 나누어진 공간에 동시에 데이터를 처리할 수 있습니다.
    • shard가 기본값인 5개라면 하나의 index에서 5개의 shard가 생깁니다.
    • node가 두개라면 두개의 node에 나누어 1번 node에 3개의 shard, 2번 node에 2개의 shard 처럼 나누어서 생성됩니다.
  • index
    • 서로 관련되어있는 document를 저장하는 공간입니다.
    • 물리적으로 한공간에 있지 않고 논리적으로 모아놓습니다.
    • index내부에 inverted index 자료구조를 저장합니다.
  • node
    • node 1개는 엘라스틱 서비스가 설치되어있는 PC 1개입니다.
    • Master node
      • index 생성/삭제, shard할당 등 전반적으로 인덱스, 노드를 관리하는 노드입니다.
      • 단일 노드로 클러스터가 구성된 경우가 아니라면 마스터노드는 보통 데이터가 저장되지 않습니다.
    • Master-eligible node
      • 마스터가 장애가 생겼을때 마스터로 선출될 수 있는 노드입니다.
    • Data node
      • 데이터에 대해 CRUD를 수행하는 노드입니다.
    • Ingest node
      • Logstash, REST API등을 통해 데이터를 받은 뒤 데이터를 저장하기 전, 전처리를 전문적으로 수행하는 노드
    • Coordinate node
      • 요청에 대해 로드밸런싱 해주는 node입니다.
      • aggregation(집계) 쿼리를 받으면 Data node에 요청을 하고 이를 취합해 aggregation을 수행합니다.
  • cluster
    • node를 여러개 묶어서 하나의 엘라스틱 서비스를 제공하는 묶음 입니다.
  • replica
    • replica는 원본인 primary의 복제본을 저장합니다. 장애가 생겼을때 replica가 primary가 되어 복구할 수 있으며 검색의 경우 replica로 대신하여 성능을 향상시킬 수 있습니다.
    • replica가 기본값인 1개라면 하나의 index에서 1개의 replica가 생긱빈다.
    • node 두개에서 index 5개를 사용하고 replica가 1개라면 아래와 같이 사용해 장애상황을 대비합니다.
      • node1
        • 0, 1, 2 primary
        • 3, 4 replica
      • node2
        • 3, 4 primary
        • 0, 1, 2 replica

출처

https://jaemunbro.medium.com/elastic-search-기초-스터디-ff01870094f0

https://www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html

https://medium.com/@eshwar.koride7/everything-about-elasticsearch-a8f36757457e

https://medium.com/velotio-perspectives/elasticsearch-101-fundamentals-core-components-a1fdc6090a5e

https://aws.amazon.com/ko/what-is/elk-stack/

https://velog.io/@zenon8485/엘라스틱-서치-기초-원리

https://jiseok-woo.tistory.com/3