만쥬의 개발일기
[Elasticsearch] - 엘라스틱 서치의 색인 With 분석기

역 인덱스 (Inverted index) ES는 텍스트와 도큐먼트를 인덱싱 시점에 용어 단위로 분해하고 역인덱스 사전을 구축한다. 특히, 기존의 데이터로 처리하기 힘든 대량의 비정형 데이터 검색이 가능하며, 전문 검색과 구조 검색 모두를 지원한다. 그리고 데이터들을 집계를 위해 최적화하고, 이를 바탕으로 병렬처리나 분산처리가 가능하다. 다소 생소한 개념인 역인덱스를 하는 과정을 알아보자. 먼저 평범한 관계형 DB에 다음과 같이 데이터를 저장한다고 생각해보자. 만약 이 데이터베이스에서 fox가 포함된 행을 찾는다면, Like %fox%를 사용해 모든 데이터베이스를 읽어야한다. 그러나 이러한 전방위 검색은 절대 해서는 안되는 불문율이 있다. (데이터가 많으면 시스템이 맛이 갈 수도 있다) 따라서 ES는 데이..

article thumbnail
[ELK] - 엘라스틱 서치 기본 개념 & 용어

엘라스틱 서치(ES)의 모든 기능은 REST API 형태입니다. 몇가지 예시는 다음과 같습니다. 테스트는 키바나 → Management → Dev Tools 에서 실행했습니다. POST /user/_doc/3 { "name": "kim", "age": 10 } ➡️ es_index라는 인덱스를 만들고 1번 도큐먼트를 생성한다. GET user ➡️ user를 조회한다. GET user/_doc/3 ➡️ user 내부의 3번 도큐먼트만 조회한다. DELETE user ➡️ user를 삭제한다. GET _cat/indices?v ➡️내부 인덱스 목록을 확인한다. (앞서 DELETE를 했다면 user가 삭제된 것을 확인할 수 있다.) 인덱스, 도큐먼트.. 기존 RDB에서도 쓰는 용어이지만, 뭔가 개념이 다르다..

article thumbnail
[ELK] - 엘라스틱 서치란?
🛠️TOOL/🔭Elasticsearch 2024. 3. 27. 18:02

엘라스틱 서치 엘라스틱 서치(Elastic Search, 통칭 ES)는 Full-text search engine으로 처음 개발되었지만, 검색엔진을 넘어 보안, 로그분석, 전문(Full-text)분석 등 다양한 영역에서 중요한 역할을 하고 있다. Kibana, Logstash, Beats들과 함께 Elastic Stack이라 불린다. ES가 타 NoSQL 제품보다 월등히 빠르고 어려운 검색, 집계 성능을 보이는 이유? ➡️검색 엔진인 동시에 데이터베이스이기 때문 충분한 크기의 클러스터가 구성되어 있다면 1초 이내의 응답 속도 보인다. ES의 또 하나의 특징은 바로 스코어링, 연관도에 따른 정렬이다. 타 데이터베이스도 제공하는 필드값 기준 정렬이 아닌, 유사도 스코어 정렬로 인해 복잡한 문자열 콘텐츠 검색..

article thumbnail
[Elasticsearch] - Elasticsearch의 각 노드 별 적정 메모리 할당
🛠️TOOL/🔭Elasticsearch 2024. 3. 27. 17:51

Elasticsearch의 램 부족 현상 엘라스틱 서치를 멀티 노드 클러스터 환경에서 연습하던 중, 노드가 error code 137과 함께 죽는 현상이 종종 발생했습니다. 이는 메모리 부족과 관련된 이슈였는데, 사용 중인 랩탑의 총 메모리가 8GB에 불과해 노드 3개짜리 클러스터를 도커 컨테이너로 구성할 때 각 노드에 단 1GB씩을 할당해줘서 발생한 것이었습니다. (기존 아키텍쳐 그림입니다) 엘라스틱 서치를 사용할 때는 연습환경일지라도 한 노드 당 최소 4GB 이상씩을 할당해줘야하고, 물론 빠른 작업을 제공하기 위해서는 메모리는 많으면 많을 수록 좋습니다. 만약 메모리가 남는다면, 특히 인덱싱과 CRUD, 검색 및 집계 등을 처리하는 데이터 노드에 더 많은 메모리를 할당해주는 것이 일반적으로 좋습니다...

article thumbnail
[Elasticsearch] - 실제 배포 환경과 동일하게 멀티 노드 클러스터 구축하기
🛠️TOOL/🔭Elasticsearch 2024. 3. 27. 17:48

엘라스틱서치 노드 & 키바나 & 로그스태시 서버를 각각 구축했다면, 이제 각각의 yml 파일들을 수정해주어야 합니다. 최종 목표 아키텍쳐는 다음 그림처럼 각 서버당 도커 컨테이너를 띄우고, 세 개의 서버에서는 엘라스틱 서치를 , 한 개의 서버에서는 키바나를 띄우는 멀티 노드 클러스터를 구축하는 것입니다. 엘라스틱 서치와 키바나 설치 과정은 이전 포스팅을 참고해주세요. [ELK] - Elasticsearch & Kibana 8.12.2 설치 (with docker,WSL2) 이번 포스팅에서는 엘라스틱 서치와 키바나 8.12.2 버전을 설치하고, 단일 노드와 멀티 노드 클러스터 환경을 각각 구축하는 방법에 대해 알아보겠습니다. 만약 서버(컴퓨팅 자원)이 여러 대라면 kangmanjoo.tistory.com ..

[Docker] - 빈 도커 이미지 기본 세팅 (Ubuntu용)
🛠️TOOL/🐳Docker 2024. 3. 26. 17:45

도커 이미지를 받으면 보통 안에 아무런 툴도 깔려있지 않아 굉장히 불편하다. 할 때마다 찾기가 귀찮아서 한 번에 정리해놓겠다. 우선 관리자 모드로 들어가기 위해 다음 옵션으로 bash에 접속해준다. docker exec -u 0 -it {컨테이너명} /bin/bash 그리고 다음 입력으로 sudo, vim, net-tools(ifconfig 등) , iputils-ping(ping 용) 을 설치해준다. 이 명령어는 도커가 아닌 데비안 계열 리눅스 VM을 처음 설치할 때도 유용하게 쓰일 수 있다. apt-get update && apt-get install -y sudo && sudo apt-get install vim && sudo apt install net-tools && sudo apt-get in..

article thumbnail
[ELK] - Elasticsearch & Kibana 8.12.2 설치 (with docker,WSL2)
🛠️TOOL/🔭Elasticsearch 2024. 3. 25. 15:58

이번 포스팅에서는 엘라스틱 서치와 키바나 8.12.2 버전을 설치하고, 단일 노드와 멀티 노드 클러스터 환경을 각각 구축하는 방법에 대해 알아보겠습니다. 만약 서버(컴퓨팅 자원)이 여러 대라면 멀티 노드 클러스터 구축 시 단일 노드를 각 서버마다 구축해주면 되고, 서버가 한 대로 한정적이라면 멀티 노드 클러스터를 구축해주면 됩니다. 개발환경 ubuntu 20.04 java 17 docker 26.0.0 elastic search 8.12.2 🚨주의사항🚨 엘라스틱 서치는 일정량 이상의 메모리가 필요합니다. 노드당 최소 4GB를 할당해주는 것이 바람직하며, 만약 1GB등 매우 낮은 메모리를 할당해준다면 작동 도중 137번 error code와 함께 프로그램이 중단될 수 있습니다. 따라서 충분한 컴퓨팅 자원을..

article thumbnail
[Network] - 업링크와 다운링크
🖥️CS/🛜네트워크 2024. 3. 20. 09:13

중계기에는 Donor 안테나와 Service 안테나가 있습니다. Donor 안테나는 기지국으로부터 신호를 받는 안테나이고, Service 안테나는 단말기에 신호를 제공하는 안테나입니다. 업링크와 다운링크를 그림으로 나타내면 다음과 같습니다. 업링크(Up Link) UL은 단말기로부터 신호를 올려보내는 통로입니다. UL IN : 단말기로부터 신호를 받는다. UL OUT : 단말기로부터 받은 신호를 증폭하여 기지국으로 보낸다. 네트워크에서는 단말기와 중계기 뿐 아니라 물리적으로 하위 장비에 연결된 상위 장비와의 연결을 의미하기도 합니다. 일반적으로 컴퓨터 네트워크에서는 스위치 또는 라우터와 같은 상위 장비와의 연결을 말합니다. 대규모 기업이나 데이터 센터에서는 여러 개의 스위치를 병렬로 연결하여 스위치 간의..