Notice
Recent Posts
Recent Comments
Link
«   2024/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
관리 메뉴

이열매의 메모장

Elasticsearch 정리 본문

서버

Elasticsearch 정리

이열매 2020. 1. 5. 09:15

Elasticsearch

개념

  • 분산형 오픈소스 검색/분석 엔진

  • 동작 원리

  • 기능

    • 데이터 수집 / 집계

      • 구문 분석, 정규화

    • 데이터 검색

      • 역색인(reverted index)을 사용하여 빠른 검색 속도

      • 키워드가 어떤 docs에 있는지 저장

  • 특징

    • 확장성

      • 샤드를 이용한 수평적 규모 확장

    • 고가용성

      • replica가 데이터의 안정성을 보장

    • Schema free

      • 스키마 대신 json 문서 구조로 된 데이터 사용

    • RESTful

      • HTTP의 RESTful API를 통해 데이터 CRUD 작업

    • Multi-tenancy

      • 서로 다른 인덱스에서 필드명이 같을 경우 한 번에 조회 가능

    • 불변성

      • 수정이 불가하여 Update시, 데이터를 삭제했다가 다시 생성

      • 다중 스레드 환경에서 동시성 문제 회피 (수정이 불가하므로 lock 필요 x)

      • 높은 시스템 캐시 활용도 (수정할 경우 시스템 캐시 삭제 및 재생성 필요하기 때문)

 

구조

  • physical

    • cluster -> Node -> Indice -> Shard

  • logical

    • Index -> Type -> Document -> field : value

  • cluster

    • 노드의 집합

    • 클러스터 내 포함된 노드로 통합 인덱싱 및 검색 기능 제공

  • Node

    • 클러스터에 포함되어 샤드를 분배받은 단일 서버

    • 런타임 상태의 ES 프로세스

    • 종류

      • master

        • 클러스터 제어

        • 인덱스 생성/삭제

        • 해당 클러스터 내 노드 모니터링

        • 데이터 입력 시 어느 샤드에 할당할 것인지(라우팅)

      • Data

        • 데이터 보유, CRUD 작업, 검색, 집계

        • 많은 CPU/메모리 자원 소모 -> 모니터링 필요

      • Ingest

        • 색인 전 데이터 전처리 작업

        • 데이터 포맷 변경 파이프라인 구성 및 실행

      • Coordinating

        • 사용자의 요청을 RR방식으로 분산 (Load balance)

      • Tribe

        • 여러 클러스터에 접근하여 동시 검색 제공

        • deprecated 된 상태

  • index

    • RDBMS의 데이터베이스와 같은 역할

    • document 집합

  • Shard

    • 인덱스의 데이터 조각 단위

    • 인덱스의 데이터를 분산하여 노드의 디스크에 효율적으로 저장될 수 있도록 함

    • 종류

      • Primary Shard

        • 실질적인 CRUD를 제공

      • Replica Shard

        • 노드 손실을 대비한 프라이머리 샤드의 복제본 (장애 복구)

        • 검색 성능 향상 (읽기 분산에 활용)

  • document

    • 인덱스의 기본 데이터 정보 단위

    • json 형식으로 표현

  • type

    • 7.0버전부터 사용 x / 인덱스 하나 당 타입을 하나씩 가짐

  • field

    • 문서에 들어가는 데이터의 타입 정의

    • 하나의 필드가 여러 개의 데이터 타입 가질 수 o

 

Elasticsearch 명령어

-d 옵션

  • 추가할 데이터를 json 포맷으로 전달

  • 파일로 데이터 전달 시 @{파일 경로}.json

-H 옵션

  • 헤더 명시

?pretty

  • 깔끔한 형식으로 결과 반환

데이터 조회

  • curl -XGET {인스턴스}/{인덱스}?pretty

데이터 생성

  • curl -XPOST {인스턴스}/{인덱스}/{type명}/{id} -d '{삽입 내용}'

데이터 수정

  • curl -XPOST {인스턴스}/{인덱스}/{type}/{document_id}/_update?preety -d '{변경 내용}'

벌크(Bulk)

  • 여러 개의 document 를 한번에 삽입

  • curl -XPOST {인스턴스}/_bulk?pretty --data-binary @{삽입할 json 파일 경로}

매핑(Mapping)

  • RDBMS의 스키마와 동일한 개념

  • 데이터 타입형 지정

  • curl -XPUT {인스턴스}/{인덱스}/_mapping -d {매핑 내용}

집계 (Aggregation)

  • 데이터 내부 트렌드 및 패턴 파악

  • Metric

    • document 내 값에 대해 산술 조합 (MAX, MIN, SUM 등)

  • Bucket

    • Group by 의 개념

    • 검색 시 필드 기준으로 doc의 데이터 집계

  • Matrix

    • 행렬 값에 대해 합, 곱 계산

  • Pipeline

    • 생성된 집계 결과를 다시 집계할 경우 사용

검색

  • URI 검색

    • _search?q={필드}:{조회값}

    • 조건문

      • field:val1 OR val2

      • field1:val1 AND field2:val2

      • field:(>10 AND <=20)

  • 쿼리 DSL 검색

    • Abstract Syntax Tree 형태의 쿼리

    • 조건 중첩 가능

    • _search? -d '{"query":{조회값}}'

    • 옵션

      • size : 반환할 결과 개수

      • from : n번째 결과부터 반환

      • sort : 지정 필드 기준 정렬

      • _source : 특정 필드 반환

      • query : 검색 조건 입력

        • match_all / match_none

        • match

        • bool

        • terms

        • term

        • regexp

        • filter : 검색 결과 내에서 재검색 조건 설정

        • aggs

 

'서버' 카테고리의 다른 글

Storm 정리  (0) 2020.01.05
Filebeat 정리  (0) 2020.01.05
Ansible 정리  (0) 2020.01.05
CentOS 7에 MySQL 5.7 소스 설치하기  (0) 2019.11.04
mod_ssl 사용하여 아파치에 SSL 설정하기  (0) 2019.10.29
Comments