분류 전체보기 36

베어 메탈 서버 vs 하이퍼 바이저 서버

하이 바이저 (Hyper Visor) : 우리가 익히 알고 있는 VM (가상화 머신) 이다. 하이버 바이저 OS 위에 (워크 스테이션, 버츄얼 박스...) 각각의 가상머신이 상주하는 구조이다. 이 구조의 각 가상머신은 서버 컴퓨터 자원의 영향을 받게된다. 베어 메탈 (Bare Metal) : 하이버 바이저가 없는, 오로지 하나의 가상 머신이 할당되는 구조로 온전한 자원을 사용하게 된다. 따라서 성능 저하가 발생하지 않고 많은 기업들이 물리 서버를 할당 받고 싶을 때 사용한다.

[Elasticsearch] Elasticsearch 서버 구축 설계

현재 구성은 다음과 같다 가정한다 . 클러스터 1 - node1 ( 9201 포트) , node2 (9202 포트) , node3 (9203포트) 키바나 : 5601 포트 목표 : 키바나에 SSL 보안 적용 ( cert.pem + key.pem) 프로세스 : 1. 먼저 기본 세팅 설정을 해준 다음 (포트, 클러스터 이름, 서버호스트 등등) , es를 최초 실행한다. (인증서 발급을 위해) 2. config/certs 폴더에 생성된 세 개의 인증서 중 , http.p12 인증서를 pem 파일로 변환 시켜야한다. (cert.pem, key.pem 으로 분리) *인증서 변환 전 , http.p12 의 인증서 비밀번호를 알아야 한다. 해당 커맨드는 /bin/elasticsearch-keystore show xp..

Elastic Search 2024.01.04

[Elasticsearch] Index Template 와 Alias API

POST \_aliases { "actions": \[ { "remove": { "index": "tem\_index1", "alias": "logs" } }, { "add": { "index": "tem\_index2", "alias": "logs" } } \] } post tem\_index1/\_doc { "text" : "음 이건 또 다른 텍스트 필드예요" } post tem\_index2/\_doc { "text" : "안녕하세요. 이것은 텍스트 필드예요" } get logs/\_search Response : { "took": 0, "timed\_out": false, "\_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }..

Elastic Search 2023.12.28

[Elasticsearch] TF/IDF, BM25, RRF

엘라스틱서치에는 두 가지의 검색이 있다. 하나는 Keyword Search , 다른 하나는. Semantic Search이다. 이 두 검색에는 소위 검색 결과 (즉, 검색 단어의 조건이 매칭되는 문서들)를 도출하는 알고리즘 (점수 계산 방식) 이 다른데, 각각의 알고리즘에 대해서 알아보자. 기본적으로 엘라스틱에서는 매치되는 점수가 높은 문서가 단어와 가장 relevant한 문서라 판단한다. 1. TF/IDF TF/IDF 알고리즘은 TF , 즉 하나의 문서에 얼마나 검색 단어가 있느냐 / (나누기) IDF, 즉 전체 문서들에서 이 단어가 얼마나 많이 들어있냐로 계산되며 수식은 아래와 같다. 이 수식을 쉽게 파악하려면 파라미터들의 비례, 반비례 관계만 따지면 된다. 정리해보자면, DF 가 높으면 높을 수록 ..

Elastic Search 2023.12.11

[ElasticSearch] master노드가 3개 이상 이여야 하는 이유

만약 단일 클러스터에서 노드가 3개 이상이라고 할 때, 마스터 노드는 최소 3개 이상이여야 한다. 이유는 만약 마스터 노드가 2개일 때를 가정하면, 하나의 마스터 노드가 기동이 중지되버리면, 나머지 남은 마스터 노드가 하나의 단일 클러스터를 또 생성해버리고, 결국 클러스터가 분리된다. 이런 상황을 방지하기 위해, 하나의 마스터 노드가있으면, 나머지 두 마스터 노드로 체킹을 하는 방식을 통해 운영된다. (그래서 마스터 노드는 홀수개로 존재하여야 한다. ) * 인덱스를 생성할 때, 프라이머리 샤드가 생성되고 이에 장애가 발생시 sub role을 하는 레플리카 샤드는 프라이머리 샤드와 다른 노드에 존재하여야 하므로 하나의 클러스토를 구성할 때 최소 3개 이상의 노드가 필요하다.

Elastic Search 2023.12.06

[DjangoRestFramework] JWT 인증

우리 Dsearch 제품 개발 중 로그인과 세션관리에 대해서 상의를 하던 도중, JWT 인증을 채택하자는 의견이 나왔다. 그래서 JWT에 대해 공부를 하게되었는데, 그 내용에 대해서 리뷰를 하고자 한다. 1. JWT 인증이란? : Json Web Token의 약어로, payload json데이터를 HMAC SHA 256 알고리즘을 이용하여 암호화 한 후, 토큰 방식 저장한다. 또, 이 토큰이 올바른 토큰인지, 기한이 만료된 토큰인지를 확인하기 위해서 jwt.decode 함수를 통하여 복호화 한다. JWT는 다른 세션관리 방식에서 사용하는 DB를 사용하지 않으므로, 빠르고 가볍다. 프로세스는 다음과 같다. 정방향 : 로그인 --> payload에 로그인 정보가 담김 --> jwt.encoding으로 암호화..

Django 2023.11.28

ElasticSearch Analyzer 정리

analyzer 는 _analyze API 중 하나이며, 분석기 역할을 한다. analyzer 에는 세 가지 요소가 들어가있다. 1. 필터 , 2. 토크나이저 3. 캐릭터 _analyze { text: {phrase} 를 analyzer:{my_analyzer}} 로 분석할 수 있다. 다음은 예시이다. GET _analyze{ "text": "The quick brown fox jumps over the lazy dog", "tokenizer": "whitespace", "filter": [ "lowercase", "stop", "snowball"] } 또한 특정 인덱스의 필드에 analyzer를 적용시킬 수 있다. PUT my_index2 { "mappings": { "properties": { "me..

Elastic Search 2023.11.28

ES - Runtime field

E.S에서 runtime field란, 임시의 필드를 생성해주는 것이다. 이 런타임 필드는 인덱스의 크기를 늘리지 않는다. 그래서 인덱싱을 했을 때, mapping을 잘못해주었을 경우,혹은 하나의 필드를 다른 타입으로도 활용하고 싶을 때 사용한다. 또한 런타임 필드를 이용해서 각 필드의 value를 활용해 연산 또한 할 수 있다 ( doc['fieldname'].value , emit). 런타임 필드를 맵핑할 때 , 기존에 존재하는 필드의 이름과 동일하게 한다면 런타임 필드는 숨겨진다. *스크립트를 짰을 때, 그 오퍼레이션에 맞는 데이터 타입의 필드를 사용해야한다.* 1. 서치로 바로 runtime_mappings을 생성 GET ds_admin_minsu_test/_search { "runtime_map..

Elastic Search 2023.10.17