티스토리 뷰

반응형

계속해서 NoSQL DB의 위상이 높아지고 점점더 데이터 저장에 있어서 key:value 형태의 방식으로 저장하는 것을 선호하기에 Elasticsearch를 DB로 사용하는 곳이 많아졌고 한번 그 시대의 흐름에 따라가보고자 Elasticsearch를 사용해보았습니다. 해당 프로젝트는 오픈소스로 공개 되어 있으며 관심이 있으신분은 아래 github 주소를 통해 접속하시면 됩니다.

https://github.com/ldh1428a/messenger-server 

 

ldh1428a/messenger-server

KaLEE Land's messenger service. Contribute to ldh1428a/messenger-server development by creating an account on GitHub.

github.com

 

Elasticsearch

You know, for search (and analysis)

... Elasticsearch is where the indexing, search, and analysis magic happens.

직독직해 하자면 뭐.. 당신이 이미 알고있듯이, 검색과 분석용이다. 라는 내용으로 시작한다. 정말 대단한 자신감인 것 같다. 역시 외국 감성이 가득가득한 시작이다. 그 뒤 설명에 뒤 따르는 내용은 뭐 인덱싱, 검색, 분석의 마법이 발생하는 곳이라고 한다. 정말 대단하다 본인의 서비스가 마법과 같다라고 하는 저 자신감... 이 본문만 읽어보아도 얼마나 인덱싱, 검색, 분석에 대해 자신감이 있는지가 보인다.

특징

1. Scalability & High-Availability

  Elasticsearch는 노드 구성을 확장가능한 구조로 구성할 수 있도록 서비스를 제공하고 있다. shard, replica를 구성하여 다른 노드가 뻗게되는 Fail-Over를 방지할 수 있고 shard를 통해서 안정성을 보장한다. 그리고 병렬처리나 노드 확장 구조가 이미 제공되기 때문에 DB 공간을 자유롭게 확장할 수 있는 장점이 있다.

 

2. Multitenancy

  Elasticsearch는 데이터를 저장할때 인덱스를 생성하여 관리하며, 쿼리 및 그룹 쿼리를 통해 여러개의 인덱스를 활용해 데이터 검색을 빠른 속도로 할 수 있다.

 

3. Easy-Use

  사용성이 매우 간단하다. 서버 설치 후 GET, POST 등의 Restful 요청으로 쉽게 데이터 접근을 할 수 있다. 또한 각 언어별 SDK(or Library)를 제공해주기 떄문에 개발자는 쉽게 사용할 수 있으며, 기존 RDB와 다르게 SQL이 필요없는 서비스이기 때문에 key:value 방식의 저장구조만 알고 있다면(혹은 JSON) 쉽게 배울 수 있다는 장점이 있다.

 

구성

1. Document

  Document는 Elasticsearch의 최소 단위(또는 Row와 비슷한 개념) 이라고 생각 하면 된다. JSON 오브젝트로 구성 되어 있으며 아래에서 설명하게 될 Field 단위로 데이터를 구성하게 된다. 중첩 구조를 지원하기 때문에 Document 내부에 Document를 넣어 구성할 수도 있다.

 

2. Field

  Field는 Document의 데이터 타입(또는 Column과 비슷한 개념)이다. Field의 경우에는 기존 RDB와 다르게 1개의 데이터 타입이 아닌 여러개의 데이터 타입을 가지게 된다. 예를 들어 기존에는 Column을 정의하면 반드시 아래 쿼리 문과 같이 데이터 타입을 1개 정의 했어야했다.

CREATE TABLE example(
	int examColumn,
 	...
);

하지만 Field의 경우에는 아래의 예시에서 볼 수 있듯이 여러개의 데이터 타입을 가질 수 있다.

const data1 = 
{
	field1 : 'hi'
}

const data2 = 
{
	field1 : 0
}

 

3. Index

  Elasticsearch에서 가장 잘 다뤄야할 구성 요소 중 하나이다. Index를 어떻게 사용하느냐에 따라서 성능의 차이가 발생하기 때문이다. 주로 RDB의 데이터베이스, 테이블과 같은 Scheme의 역할을 담당하고 있다. Index를 생성할 때에는 반드시 Primary Shard와 Replica Shard를 생성하게 되는데 이는 아래 실습을 진행하면서 직접 설정하는 방법을 알아보도록하자.

 

Elasticsearch 서버 구성

저는 홈 서버가 있기 때문에 Elasticsearch를 직접 설치하는 것으로 하였고, 테스트용 서버가 1개 밖에 없기 때문에 노드 구성은 단일로 하게 되었다. (단일 설정도 가능은 함, 나중에 돈이 많아 지면... 전용 서버를 5대 이상 기동해보고 싶다....)

 

설치 환경

설치 환경은 최소한 2core 이상의 cpu와 4gb 이상의 램을 요구한다. (Minimum일 뿐 높으면 높을 수록 좋다...)

Elasticsearch 설치 버전은 7.x 이상 버전을 사용하도록 하자.

  • OS
    • Ubuntu 20.04 LTS
  • CPU
    • Ryzen5 5600x (6core 12thread)
  • RAM
    • 32GB (Clock Speed: 3200 MHz)
  • Storage
    • Seagate 파이어쿠다 520 M.2 NVMe (500GB)

 

설치 방법

설치는 매우 간단하다 아래 명령어를 터미널에 입력하기만 하면 설치가 진행 된다.

 

1. Elastic Public GPG 키 추가

$ curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

2. apt에 source list 등록 하기

$ echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

3. package list 업데이트 및 Elasticsearch 설치

$ sudo apt update
$ sudo apt install elasticsearch

 

기본 설정

설치가 정상 적으로 되었다면 이후에는 아래 경로에 있는 yml 파일을 vi로 수정해 설정 값을 변경 해 주도록 하자.

$ sudo vi /etc/elasticsearch/elasticsearch.yml

*주의: yml파일은 포맷이 매우매우매우 중요하기 때문에 yaml(yml) 파일 작성 방법에 대해 충분히 숙지 후 작성 해주세요. (아님 전용 에디터 사용해도 좋습니다 :D)

 

위 파일을 에디터로 열었다면 network.host 라는 부분을 검색해 변경하시면 됩니다.

# network.host: localhost 으로 되어 있는 부분을 #을 지워주시면 됩니다. (만약 외부에서 접근하고 싶다면 해당 localhost부분을 0.0.0.0으로 변경하면 되는데 굳이 권장 하진 않습니다.)

 

대부분의 기본 설정이 너무나도 잘 되어 있어서 굳이 변경 없이 실행하셔도 실행하는데는 전혀 문제 없습니다. (고급진 설정을 하고 싶다면 다음을 참조)

 

SpringData + Elasticsearch 구성

작성중 ...

 

 

 

 

 

 

 

 

 

Reference

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

 

What is Elasticsearch? | Elasticsearch Guide [7.13] | Elastic

What is Elasticsearch?edit You know, for search (and analysis) Elasticsearch is the distributed search and analytics engine at the heart of the Elastic Stack. Logstash and Beats facilitate collecting, aggregating, and enriching your data and storing it in

www.elastic.co

https://twofootdog.tistory.com/53

 

Elasticsearch 개념 및 구조

이번 글에서는 그동안 사용해왔던 Elasticsearch의 개념 및 구조에 대한 정리를 해보고자 한다. 1. Elasticsearch 개념 1-1. 소개 Elasticsearch란 아파치 루씬(Lucene) 기반의 오픈소스 실시간 분산 검색 엔진으

twofootdog.tistory.com

https://velog.io/@qnfmtm666/elasticsearch-Elasticsearch-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-Ubuntu-20.04

 

[🌎elasticsearch] Elasticsearch 설치하기 (Ubuntu 20.04)

Elasticsearch 가이드북 ✈Elasticsearch 홈페이지 가기 ✈다음과 같은 사항이 필요합니다.Ubuntu 20.04 버전이 깔려 있는 OS듀얼코어 이상의 cpu 와 4gb 이상의 램 원활한 실행을 위해 필요하며 필수는 아닙

velog.io

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   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
글 보관함