Elastic Search 13

[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

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

Bool query (must 와 should)

Elasticsearch bool query를 공부하면서 문제에 직면하였다. must와 should 그리고 filter의 차이는 무엇인가? 정답은 must 와 should는 검색시 score 계산을 하고, filter 쿼리를 거치면 점수 계산을 하지 않는다 . 그렇다면 must 와 should의 차이점은? 이미지로 살펴보자 현재 ds_admin_minsu_test 인덱스에는 두 개의 document가 있고 field의 구성은 "index_name", "field_name" 두 가지로 되어있다. "index_name"이 "arigatto" 인 다큐먼트를 검색하는데, 현재 ds_admin_minsu_test 인덱스에는 두 개의 필드 이름이 모두 "index_name" = "arigatto"이므로 둘 다 검색..

Elastic Search 2023.10.06

나에게 주어진 과제들

1. VM 서버 3대 설치 - 1번 vm : E.S 설치 - 2번 vm : E.S 및 filebeat 설치 - 3번 vm : E.S 및 Filebeat 설치 - 4번 vm : Logstash 및 kibana설치 각 E.S (NODE) 를 하나의 클러스터에 연동 전달사항 : 1. 서버 4대에 ES 노드 3개서버, 1개서버에 키바나, logStash 세팅 es 1~3번 서버중 2대에 파일 비트 설치 2. 파일비트로 서버의 SYSTEM로그수집, 3. logStash 에서 파이프라인으로 수집 라인 2개 구성 파일비트 2대에서 각각 데이터 받기 4. datastream형식으로 인덱스 생성후 2개의 인덱스 에 로그 받기 4. logStash에서 필터 이용해서 ingest구성 (grok필터 테스테 ) 5. ES에 h..

Elastic Search 2023.09.15