ELK 8

특정 인덱스에 모든 도큐먼트 조회(python)

es = Elasticsearch(ES_URL, http_auth=(ES_USER, ES_PW)) # Elasticsearch 서버의 주소에 맞게 수정 def fetch_all_documents(index_name): """인덱스의 모든 문서를 조회하여 리스트로 반환""" data = [] page = es.search( index=index_name, scroll='2m', # 스크롤 타임아웃 설정 size=1000, # 페이지 당 문서 수 body={} ) sid = page['_scroll_id'] scroll_size = page['hits']['total']['value'] total_docs = scroll_size # 스크롤 API를 사용하여 모든 문서를 조회하면서 tqdm을 사용하여 진행 ..

ELK 2024.02.05

Logstash 란?

Logstash 란? 이름 그대로 로그를 저장한다라는 의미를 가지고 있다. 로그라는 것은 반정형데이터이며 세상의 모든것이 로그가 될 수 있기때문에 로그 형태를 강제할 방법도 없다. 결국 로그를 수집하는 쪽에서 로그형태를 분석하고 시스템에ㅔ서 인식할 수 있도록 로그를 정제하는 작업이 필요하다. 로그스테시는 이과정을 쉽고 편하게 할 수 있도록 지원한다. 어떤 형태의 로그에 대해서도 로그를 수집 - 가공 - 전송하는 일련의 과정을 간편하게 구현하기 위한 강력한 기능까지 제공한다. 기본적인 시스템 흐름 데이터수집 -> 데이터가공(로그스태시) -> 데이터저장(엘라스틱 서치) -> 분석&시각화(키바나) 로그스태시 특징 플러그인 기반: 로그스태시의 파이프라인을 구성하는 각 요소들은 전부 플러그인 형태로 만들어져있다...

ELK 2023.11.06

엘라스틱 서치 - 집계 정리

집계 엘라스틱 서치에서 집계는 데이터를 그룹핑하고 통곗값을 얻는 기능으로 SQL의 GROUP BY와 통계함수를 포함하는 개념 집계를 잘 이해할수록 키바나 툴을 더 잘 사용할 수 있다. 집계의 요청 - 응답 형태 집계를 위한 특별한 API가 제공되는 것이 아니다. search API의 요청본문에 aggs 파라미터를 이용하면 쿼리결과에 대한 집계를 생성할 수 있다. 엘라스틱 서치는 크게 메트릭 집계와 버킷 집계라는 두가지 타입의 집계가 있다. 메트릭 집계 필드의 최소/최대/합계/평균/중간값 과같은 동계결과를 보여준다. avg : 평균값 계산 min : 최솟값 max : 최댓값 sum : 필드의 총합 precentiles: 필드의 백분위값 stats: 필드의 min,max,sum,avg,cout를 한번에 볼 ..

ELK 2023.11.06

엘라스틱 서치 검색 정리

엘라스틱서치 검색 쿼리컨텍스트 필터 컨텍스트 쿼리스트링과 쿼리 dsl의 차이점 쿼리컨텍스트와 필터 컨텍스트 쿼리컨텍스트: 도큐먼트에서 연관성을 계산해 최대한 비슷한 데이터를 찾아준다. 필터 컨텍스트: 찾고자하는 문자열이 정확한지 아닌지 예/아니요만 가지고 찾아준다. 쿼리스트링과 쿼리 dsl 엘라스틱 서치에서 쿼리를 사용하는 방법은 쿼리 스트링과 쿼리 dsl두가지가 있다. 간단한 조건에는 쿼리스트링 복잡한 논리조건이나 코드수준에서 제어하기 위해서는 쿼리 dsl을 사용하는 것이 좋다. 쿼리스트링 쿼리스트링은 REST API의 URL주소에 쿼리문을 작성하는 방식 흔히 볼수 있다. 주소?샬라샬라 쿼리 DSL 쿼리 dsl은 REST API의 요청 본문 안에 JSON형태로 쿼리를 작성한다. 쿼리 DSL은 엘라스틱 ..

ELK 2023.11.06

엘라스틱 스택

엘라스틱 서치의 탄생 엘라스틱 서치가 처음 등장했을때는 빅데이터 파이프라인을 구성하는 플랫폼 형태로 될것이라고 예상하기 어려웠을것이다. 엘라스틱 서치가 등장했을무렵 사이트내에서 전문 검색기능을 제공하는 강력한 소프트 웨어의 필요성이 있었고 검색솔루션 서비스는 대부분 구현체를 공개하지 않아서 접근하기가 쉽지 않았었다. 엘라스틱 서치는 자바 루씬에서 시작됐다. 루씬은 라이브러리 형태로 되어있기때문에 제대로 사용하기 위해선 너무나 많은 공부와 준비를 해야했다. 그이후 많은 과정을 거처서 자바외에도 다양한 프로그램언어를 지원하는 솔루션을 가진 검색엔진인 엘라스틱 서치가 나왔다. 엘라스틱 스택 엘라스틱 서치가 나올무렵 사용자가 선택한 보관함으로 로그를 보내는 오픈소스 데이터 수집도구인 로그 스태시를 개발하고 있었..

ELK 2023.11.06

ElasticSearch 색인/검색 동작과정

색인(Index) 과정 색인은 문서를 분석하고 저장하는 과정을 색인이라고 합니다. 먼저 색인과정은 인덱스가 있는지 체크한후 매핑정보를 파악하고 inverted index생성 후 문서를 저장하는 과정입니다. 프라이머리 샤드가 1개일때 색인이 하나의 데이터노드에서만 일어납니다. 이때 데이터노드가 3대이상이라면 사실상 2개의 데이터노드에만 저장이되고 나머지 데이터노드는 그냥 탱자탱자 놀고 있는 것입니다. 그렇기 때문에 적절한 수의 샤드의 개수를 설정하는 것이 성능에 큰 영향을 미칩니다. 클러스터의 이점을 잘 살리고 있는지, 적절한 샤드의 갯수를 설정해서 최대한 많은 노드가 색인에 참여하고 있는지 체크할 필요가 있습니다. 하지만 만약 샤드설정 이후 데이터 노드가 추가가 된다면? 샤드의 설정은 바꿀수가 없고 데이..

ELK 2023.06.11

ElasticSearch 색인/검색 동작과정

색인(Index) 과정 색인은 문서를 분석하고 저장하는 과정을 색인이라고 합니다. 먼저 색인과정은 인덱스가 있는지 체크한후 매핑정보를 파악하고 inverted index생성 후 문서를 저장하는 과정입니다. 프라이머리 샤드가 1개일때 색인이 하나의 데이터노드에서만 일어납니다. 이때 데이터노드가 3대이상이라면 사실상 2개의 데이터노드에만 저장이되고 나머지 데이터노드는 그냥 탱자탱자 놀고 있는 것입니다. 그렇기 때문에 적절한 수의 샤드의 개수를 설정하는 것이 성능에 큰 영향을 미칩니다. 클러스터의 이점을 잘 살리고 있는지, 적절한 샤드의 갯수를 설정해서 최대한 많은 노드가 색인에 참여하고 있는지 체크할 필요가 있습니다. 하지만 만약 샤드설정 이후 데이터 노드가 추가가 된다면? 샤드의 설정은 바꿀수가 없고 데이..

ELK 2023.06.11

ElasticSearch 클러스터 구성

Es 는 기본적으로 고가용성 지원을 위해서 한대이상의 클러스터를 지원한다. 노드의 종류 마스터 노드 : 클러스터 상태 관리 및 메타데이터 관리 데이터 노드 : 문서 색인 및 검색 요청 처리 코디네이팅 노드 : 검색요청 처리 인제스트 노드: 색인되는 문서의 데이터 전처리 마스터 노드 마스터 노드는 실질적으로 마스터노드의 역할을하는 클러스터하나와 마스터노드는 한대밖에 없기때문에 이를 대체할 마스터 후보노드가 대기중이다. 사용자가 Es REST API에 마스터노드로 요청이 들어오면 그 다음 데이터노드에서 요청된 데이터를 검색해서 사용자에게 응답을 해주는 프로세스를 가지고 있다. 이때 불필요하게 마스터노드에서 데이터노드간에 통신이 발생하게 되기때문에 상황에 따라선 데이터노드에 바로 요청을 하는 것이 가능하다. ..

ELK 2023.06.11