본문 바로가기

전체 글

(53)
ElasticSearch 기초 문법 사용법 + Postman에서 테스트 하는 방법 :: DANIDANI 기본적으로 ElasticSearch의 사용방법은 RDB과 큰 틀은 유사하다. CRUD RDB ElasticSearch READ SELECT GET UPDATE UPDATE PUT CREATE INSERT POST DELETE DELETE DELETE 1. ElasticSearch 문법 사용법 전체 조회 GET _search { "query": { "match_all": {} } } 특정 Index(ex. test)에 대해서 조회 GET test/_search { "query": { "match_all": {} } } 가장 기본적인 search - 밑에 두 코드 같은 결과 GET story/_search { "query": { "match": { "buse": "1" } } } GET story/_sear..
Logstash로 MySQL과 AWS ElasticSearch 연동 + Kibana 사용 :: DANIDANI 지난 포스팅에서는 AWS ElasticSearch 구축과 기본 세팅을 하였습니다. 2021.04.11 - [DevOps/Elastic Stack] - AWS ElasticSearch 구축 및 기초 세팅 :: DANIDANI 이번에는 MySQL에 있는 데이터를 준실시간으로 Logstash를 사용하여 AWS ElasticSearch와 연동해보겠습니다! 1. Logstash 설치 on linux sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch cd /etc/yum.repos.d sudo vi logstash.repo logstash.repo에 아래 내용 작성(new file) [logstash-7.x] name=Elastic repos..
AWS ElasticSearch 구축 및 기초 세팅 :: DANIDANI 1. ElasticSearch 란? 아파치 루씬 기반의 검색 엔진이다. 자바로 개발되어 있으며 오픈 소스로 활용이 가능하다. 2. ElasticSearch 특징 분산 방식 페타바이트의 데이터 처리가 가능하다. 역색인(inverted index) 방식 키워드를 통해 문서를 찾아내는 방식이다. 아주 빠른 전체 텍스트 검색이 가능하다. 문서에 나타나는 모든 고유한 단어 목록을 만들고, 각 단어가 발생하는 모든 문서를 식별한다. 실시간에 가까운 검색 제공, 빠르다 해쉬테이블 방식이어서 검색시 O(1)의 효과를 낸다 RDB 같은 경우 O(n) 기타 기본 기능 - 리밸런싱 및 라우팅은 자동 수행, 복원력, 인덱스 수명 관리, 데이터 롤업 등 3. ElasticSearch 구조 인덱스(색인) ex. 고객 인덱스, 주..
winston - NodeJS 로깅 라이브러리 :: DANIDANI 설치방법 npm install --save winston npm install --save winston-daily-rotate-file config 디렉터리에 새 파일을 생성(winston.js) const winston = require('winston'); const winstonDaily = require('winston-daily-rotate-file'); const logDir = 'logs'; // logs 디렉토리 하위에 로그 파일 저장 const { combine, timestamp, printf } = winston.format; // Define log format const logFormat = printf(info => { return `${info.timestamp} ${info..
에라토스테네스의 체(소수 찾기) C++ / 과정 / 시간복잡도 :: DANIDANI 알고리즘 개념 고대 그리스 수학자 에라토스테네스가 만들어 낸 방법으로, 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체'라고 부른다. 빠르고 정확하게 소수를 찾는 알고리즘 n까지의 소수를 알고 싶을 때, n^1/2 이하의 수의 배수만 지우면 된다. 과정 배열 생성 후 초기화한다. (1은 소수가 아니니 지우고 시작) 2부터 시작해서 특정 수의 배수에 해당하는 수를 모두 지운다. 2를 제외한 2의 배수를 지운다. 3을 제외한 3이 배수를 지운다. 반복 남아있는 수가 소수! 코드 vector arr(n+1); arr[1] = true; for(int i = 2; i
이분 탐색(Binary Seaerch) C++ / 장단점 / 시간복잡도 :: DANIDANI 알고리즘 개념 정렬이 되어있는 배열에서 데이터를 찾을 때, 원하는 탐색 범위를 두 부분으로 나눠 찾아간다. 중간 값과 비교해서 탐색 범위를 절반씩 줄여간다. 과정 정렬을 한다. left 값과 right 값의 중간값인 mid를 정한다. 찾고자 한 값과 mid와 비교후, mid보다 작으면 right = mid -1, mid보다 크면 left = mid + 1로 설정한다. left > right가 될 때까지 반복한다. 코드 int binarysearch(int key, int left, int right){ long long mid = (left + right) / 2; if(left
[백준] 2220 힙정렬 문제풀이 C++ :: 그리디 알고리즘 :: DANIDANI 2220 힙 정렬 www.acmicpc.net/problem/2220 2220번: 힙 정렬 힙은 자료의 추가, 우선순위가 제일 높은 자료의 삭제가 가능한 자료구조이다. 이와 같은 힙에는 두 종류가 있는데, 각각 최소-힙, 최대-힙이다. 이 문제에서는 최대-힙을 다루기로 하자. 이와 같 www.acmicpc.net 문제를 보고, 먼저 예제의 답을 거꾸로 삭제해보았다. 삭제를 해보면서 보인 규칙은 크게 두 가지였다. 1. n번째 수를 삭제하면 n-1번째 수의 최대 swap 형태가 된다. 2. 항상 마지막은 1이다. 이를 바탕으로 생각한 문제 접근 방법은 다음과 같다. 1. 1부터 n까지 수를 차례로 힙에 넣는다. 2. 이때, k번째 수를 넣고 k와 1을 swap 한다. 3. 최대 힙을 구성한다. 4. 2-3..
힙정렬(Heap Sort) C++ / 장단점 / 시간복잡도 / 공간복잡도 :: DANIDANI 알고리즘 개념 완전 이진트리를 기본으로 하는 힙 자료구조를 기반으로 한 정렬 방 불안정 정렬에 속한다. 최대 힙의 루트가 원소의 최댓값이라는 점을 활용하여 정렬을 수행하는 방법이다. 루트를 제외한 힙이 재정렬되는 과정이 반복되면서 정렬이 이루어진다. 과정 최대 힙을 구성한다. 루트를 힙의 마지막 원소와 교환한다. 마지막 원소를 제외하고 나머지 원소에 대해서 반복한다. 정렬된 원소를 제외하고 최대 힙에 원소가 1개 남으면 정렬을 종료한다. 최대 힙 재구성 과정 노드 i(=n/2)와 그 자식 노드(2i, 2i+1) 중 큰 값과 비교하여 자식 노드가 더 크면 노드 i와 교환한다. i의 값을 1씩 감소시킨 후 i>0 인 경우에 대해서 위 과정을 반복한다. 코드 트리에서 index 0은 사용하지 않으니 arr [..