일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LG Aimers
- PCA
- gpt
- 분류
- 티스토리챌린지
- 오블완
- AI
- LG
- deep learning
- Machine Learning
- Classification
- supervised learning
- 회귀
- regression
- LLM
- GPT-4
- 지도학습
- 머신러닝
- OpenAI
- LG Aimers 4th
- 해커톤
- ChatGPT
- 딥러닝
- Today
- Total
SYDev
Elasticsearch 기본 개념 + ELK stack 본문
Elasticsearch
- Elasticsearch: Apache Lucene 라이브러리를 기반으로 하는 오픈 소스 검색 및 분석 엔진
- 주로 대량의 데이터를 실시간으로 검색하고 분석하는 데에 사용 -> log, metric, full text ...
장점
- 검색 엔진: 단순한 텍스트 매칭 검색이 아닌 전문 검색이 가능, 다양한 종류의 검색 쿼리를 지원
- 분산 처리: 데이터를 여러 노드에 분산 저장하여 검색이나 집계 작업 등을 수행할 때도 분산 처리 지원
- 고가용성 제공: 클러스터를 구성하고 있는 일부 노드에 장애가 발생해도, 복제본 데이터를 이용해 중단 없이 서비슬르 지속
- 수평적 확장성: 더 많은 처리가 필요할 때, 새로운 노드에 elasticsearch를 설치하려 클러스터에 참여시키는 것만으로도 확장 가능
- JSON 기반의 REST API 제공: JSON 형태의 문서를 저장, 색인, 검색하며, 작업 요청을 보낼 때도 JSON 기반의 REST API를 사용
- 데이터 안정성: 데이터 색인 요청 후 200 OK를 받았다면 데이터는 확실히 Disk에 기록
- 다양한 플러그인을 통한 기능 확장 지원
- 준실시간 검색: 최대 1초 정도의 시간이 걸림
단점
- 트랜잭션 지원 X
- 조인 연산 지원 X
Apache Lucene?
- Java로 작성된 무료 오픈 소스 검색 엔진 라이브러리
-> 검색 기능을 가지고 있는 application을 개발할 때 사용 가능한 라이브러리 (자체 수집 기능 제공 X)
- 동작 방식
1) 검색 대상 분석
- 검색 대상 텍스트 확보
- 내부적으로 수집 기능 제공 X
- 외부에서 대상을 수집해서 전달해줌으로써 검색 대상 텍스트 확보 - 루씬 문서 생성
- document: 루씬에서 사용하는 개별 단위
- lucene document는 여러 개의 field로 구성됨 - document 텍스트 분석
- 텍스트 분석기를 사용하여 텍스트를 token이라 불리는 단위로 분리 - index에 document 추가
- indexing 과정이 끝난 해당 document를 index에 추가
2) 검색 과정
- 검색 화면 인터페이스를 통해 검색어 전달 받음
- 검색 질의 생성
- 전달받은 검색어를 검색 엔진에서 인식하는 query 객체로 변 - query를 통해 검색
- query 객체에 해당하는 결과를 받아옴
- 순수 불리언 모델: 지정된 질의에 문서가 해당하는지 여부 확인, 점수 계산 X
- 벡터 공간 모델: 질의와 문서 모두 고차원 공간의 벡터로 표현, 거리를 계산하여 문서와 질의 사시의 연관도나 유사도 확인
- 두 모델을 필요에 따라 선택
ELK Stack
- 엘라스틱 서치는 단독으로 검색을 위해 사용하거나, ELK stack을 기반으로 사용
- ELK stack: Elasticsearch + Logstash + Kibana + Beat
- Filebeat: 서버에서 생성하는 log를 수집하여 logstash 서버로 log를 전송
- Logstash: 로그 및 트랜잭션 데이터를 수집하여 집계 및 파싱(정제 및 전처리)을 하고 ES로 전달
- Elasticsearch: logstash로부터 전달받은 데이터를 저장하고, 검색 및 집계 등의 기능 제공
- Kibana: 저장된 로그를 Elasticsearch의 빠른 검색을 통해 가져와 시각화 및 모니터링 기능 제공
Elasticsearch 기본 구조
-> 각 document들을 미리 indexing하여 key, value 형태로 mapping
-> 따라서 기존 rdbms보다 빠를 수 밖에 없음
일반적으로 사용하는 아키텍처
- 특정 서버에서 생성되는 데이터(일반적으로 log)를 RDBMS or Non-RDBMS에 저장하고, 검색 혹은 분석이 필요한 부분만을 데이터 추출하여 ES에 자동 저장
- 이때 DB에서 필요한 데이터를 추출하여 자동적으로 ES에 데이터를 전송하는 부분을 담당하는 것이 Logstash
- MongoDB에 ES를 연결하는 task에 특화된 Monstache도 존재
[ MongoDB + ElasticSearch + Monstache ] 도커 기본 셋팅을 해보자
회사 내부에서 검색엔진을 적용하게 되면서 구글링을 해보니 생각보다 많은 정보가 없었다. 내가 추구하는 개발 환경은 Docker로 구축하는 것이었다. 국내 자료가 많이 없고 , 외국 자료 역시 그
sudarlife.tistory.com
MongoDB와 ES를 동기화하는 이유
https://velog.io/@emily2307/MongoDB-Elasticsearch-%EB%8F%99%EA%B8%B0%ED%99%94-using-Monstache
MongoDB - Elasticsearch 동기화 (using Monstache)
.
velog.io
- ES는 transaction, ACID 속성 보장 X
- ES의 강점은 실시간에 가까운 검색이 가능하다는 것 -> 인덱싱 비용이 높기 때문에 데이터 입력이 많으면, 빠른 검색 기능 제대로 활용 불가능
- 따라서, 메인 저장소로 MongoDB를 따로 두고, 검색과 분석에 필요한 필드만 커스텀 매핑으로 ES에 동기화
- 대부분의 기업은 ES를 Main DB 보조하는 search engine으로 사용
참고자료
- Lucene in Action: Covers Apache Lucene V.3.0, Michael McCandless / Erik Hatcher / Otis Gospodnetic | Manning Publications | 2010년 07월 28일
- https://www.ibm.com/kr-ko/topics/elasticsearch
Elasticsearch란 무엇인가요? | IBM
Elasticsearch는 애플리케이션을 강화하고 개발 및 관리 작업을 간소화하는 등 다양한 작업을 수행할 수 있는 오픈 소스 검색 및 분석 엔진입니다.
www.ibm.com
[Elasticsearch] 검색 엔진 : Elasticsearch 설치하기(+ELK)
Elasticsearch🔎 자바로 만들어진 루씬 기반의 오픈 소스 검색 엔진이다. 다량의 데이터를 저장한다는 측면에서는 DB와 비슷해보이지만, 전혀 다르다. 주로 대량의 데이터를 실시간으로 검색하고
steady-record.tistory.com
[루씬 인 액션] 1. 루씬(Lucene)의 개념 및 구조
루씬이란? → 루씬은 자바로 만들어진 고성능 정보 검색(IR : information retrieval) 라이브러리입니다 (IR : 문서를 검색하거나, 문서의 내용을 검색하거나, 문서와 연관된 메타 정보를 검색하는 과정
jackjeong.tistory.com
[ES] 1. Elasticsearch 와 루씬
루씬(Lucene) 기반의 Java 오픈소스 분산 검색 엔진
velog.io
Elasticsearch 기본 개념 및 특징 정리
What is Elasticsearch?
velog.io
'GDGoC KHU 1th' 카테고리의 다른 글
gRPC란? (2) | 2024.11.16 |
---|---|
[Go 언어로 배우는 웹 애플리케이션 개발] Chapter 18. RDBMS를 사용한 데이터베이스 처리 구현하기 (0) | 2024.11.14 |
[Go 언어로 배우는 웹 애플리케이션 개발] Chapter 17. 엔드포인트 추가하기 (4) | 2024.11.13 |
[백엔드를 위한 GO 프로그래밍] Chapter 6. 상호 호환성 (6) | 2024.10.07 |