본문 바로가기

개발/ELK9

[Elasticsearch] 클러스터 구축하기 - 3 앞서 작성한 '클러스터 구축하기 - 1'을 기반으로, 시나리오를 통해 실제 클러스터를 구성할 때 고려해야 할 항목들을 알아보겠습니다. 엘라스틱서치는 클라이언트에 저장되는 로그를 장기간 모아 데이터를 분석/집계하는 분석 엔진으로 사용되거나, 검색에 쓰일 데이터를 저장하여 사용자의 검색 요청에 데이터를 제공하는 형태의 검색 엔진으로 서비스하는 것이 일반적입니다. 시나리오 #1 - 일 100GB 데이터 분석용 클러스터 첫번째 시나리오는 분석 엔진으로 엘라스틱서치 클러스터를 가정하는 시나리오입니다. - 시나리오 #1 : 하루에 100GB 정도의 데이터를 저장하면서 보관 기간이 한 달인 분석 엔진 클러스터 - 인덱스 이름 패턴 : elasticsearch-YYYY.MM.dd - 프라이머리 샤드 기준 하루에 색인되.. 2023. 8. 21.
[Elasticsearch] 클러스터 구축하기 - 2 앞서 작성한 '클러스터 구축하기 - 1'을 기반으로 직접 클러스터를 구축합니다. elasticsearch.yml와 jvm.options파일의 설정은 엘라스틱서치 8.9.1버전을 기준으로 작성하였습니다. 기본 값으로 구성된 elasticsearch.yml을 다중 노드 클러스터로 구성하는 방법에 대해 다루겠습니다. 클러스터 사용하기 단일 노드로 운영 중인 엘라스틱서치를 3대의 마스터 노드와 3대의 데이터 노드로 바꾸는 과정을 예시로 합니다. 먼저 모든 설정이 주석 처리 되어있는 elasticsearch.yml을 수정하지 않고 실행할 경우 단일 노드로 환경설정이 구성됩니다. 이때 클러스터의 이름은 기본값인 elasticsearch로 설정되기 때문에 일단 클러스터의 이름은 elasticsearch로 설정하여 파.. 2023. 8. 20.
[Elasticsearch] 클러스터 구축하기 - 1 클러스터 구축을 위해 엘라스틱서치 환경 설정 파일을 다루는 방법에 대해 알아보겠습니다. elasticsearch.yml와 jvm.options파일의 설정은 엘라스틱서치 8.9.1버전을 기준으로 작성하였습니다. 대부분의 설정이 주석으로 처리되어 있고, 해당 설정에 대한 간략한 설명이 주석으로 제공됩니다. 기본으로 제공되는 설정과 필수적으로 알아야 하는 여러가지 설정을 영역별로 살펴보겠습니다. elasticsearch.yml 설정 파일 elasticsearch.yml 파일은 엘라스틱서치를 구성하기 위해 기본이 되는 환경 설정 파일입니다. 아래 코드는 엘라스틱서치를 처음 설치했을 때의 기본 설정입니다. elasticsearch.yml # ======================== Elasticsearch C.. 2023. 8. 19.
Elasticsearch 기본 Elasticsearch란? 엘라스틱서치는 아파치 루씬(Apache Lucene) 기반의 오픈소스 검색 엔진으로 아파치 루씬이 가진 한계를 보완하기 위해 개발되었습니다. 엘라스틱서치는 루씬 엔진을 확장하고 관리하기 위해 Java 언어와 JVM을 활용합니다. 엘라스틱서치는 NoSQL 데이터베이스 중 하나로서, 기존의 관계형 데이터베이스(RDBMS)와는 다르게 엘라스틱서치는 JSON 형식의 문서(document)를 저장하며, 각 문서는 고유한 식별자와 그에 따른 데이터를 가집니다. 이러한 문서들은 인덱스(index)내에 저장되어 있으며, 이를 통해 빠른 검색 및 분석을 수행할 수 있습니다. 대량의 데이터를 빠르게 저장, 검색 및 분석할 수 있기 때문에 주로 로그 및 이벤트 데이터 저장, 웹 사이트 검색, 모.. 2023. 5. 17.
[Logstash] 로그스태시 파이프라인, 필터 이 글에서 다루는 내용들은 ELK stack이 구축되어 있다는 가정하에 작성하였습니다. 로그스태시는 플러그인 기반의 오픈소스 데이터 처리 파이프라인 도구입니다. 다소 복잡하고 귀찮은 데이터 전처리 과정을 별도의 어플리케이션 작성 없이 비교적 간단한 설정만으로 수행할 수 있습니다. 로그스태시는 ELK stack에서 데이터를 수집 - 변환 - 저장 - 시각화 하는 서비스를 구성할 때 로그스태시는 데이터를 수집하거나 원하는 형태로 가공하는 역할을 합니다. 비츠를 포함한 여러 소스 파일을 입력으로 받을 수 있고 데이터를 수정/삭제/추가해 엘라스틱서치나 다른 시스템으로 데이터를 전송할 수 있습니다. 로그스태시에서 가장 중요한 부분은 파이프라인입니다. 파이프라인은 데이터를 입력받아 실시간으로 변경하고 이를 다른 시.. 2023. 4. 11.
[Elasticsearch] 집계 쿼리 다음 예제들과 인덱스는 ELK stack이 구축되어 있다는 가정하에, 키바나에서 제공하는 샘플데이터를 이용합니다. 키바나 홈 -> Get started by adding integrations 엘라스틱서치에서 집계는 데이터를 그룹핑하고 통계값을 얻는 기능으로 SQL의 GROUP BY와 통계 함수를 포함하는 개념입니다. 이를테면 데이터를 날짜별로 묶거나 특정 카테고리별로 묶어 그룹별 통계를 내는 방식입니다. 집계가 중요한 이유는 키바나의 주 기능인 데이터 시각화와 대시보드는 대부분 집계 기능을 기반으로 동작하며, 집계를 제대로 이해할수록 키바나라는 툴을 더 잘 사용할 수 있습니다. 집계의 요청 / 응답 형태 집계를 위한 특별한 API가 제공되는 것은 아니며, search API의 요청 본문에 aggs 파라.. 2023. 4. 10.
[Elasticsearch] 검색 쿼리 다음 예제들과 인덱스는 ELK stack이 구축되어 있다는 가정하에, 키바나에서 제공하는 샘플데이터를 이용합니다. 키바나 홈 -> Get started by adding integrations 엘라스틱서치에서 쿼리를 사용하는 방법은 쿼리 스트링과 쿼리 DSL 두 가지가 있습니다. 쿼리 스트링은 한 줄 정도의 간단한 쿼리에 사용하고 쿼리 DSL은 한 줄에 넣기 힘든 복잡한 쿼리에 사용합니다. 먼저 쿼리를 작성하기 위해 엘라스틱 서치의 문자열에 대해 알아야 합니다. 5.x 버전부터 문자열 타입이 텍스트와 키워드 라는 두가지 타입으로 분리되었습니다. 텍스트 타입은 일반적으로 분석기에 의해 토큰으로 분리되고 역인덱싱을 합니다. 키워드 타입의 경우 문자열 전체가 하나의 용어로 인덱싱 됩니다. 자세한 내용은 아래 .. 2023. 4. 7.
[Elasticsearch] 벌크 데이터 bulk API 데이터 CRUD 동작을 할 때, REST API를 호출해 하나하나 도큐먼트를 요청하는 것보다 벌크로 한번에 요청하는 것이 효율적입니다. POST _bulk {"index" : {"_index": "mydoc", "_id": "1"}} {"field_test": "test", "field_test2": "test"} {"create" : {"_index": "mydoc", "_id": "2"}} {"field_test": "test", "field_test2": "test"} {"update": {"_id" : "2", "_index": "mydoc"}} {"doc": { "field_test" : "update"}} {"delete": {"_index": "mydoc", "_id": "1"}} 위와 같이.. 2023. 3. 27.
[Elasticsearch] CRUD - 데이터 입력, 조회, 삭제, 수정 1. 입력 (PUT) 도큐먼트를 입력하는 경우, PUT 매소드를 사용합니다. mydoc 이라는 인덱스에 ID가 1인 도큐먼트를 입력하려면 아래와 같이 작성합니다. PUT mydoc/_doc/1 { "title":"안녕하세요", "message":"반갑습니다." } 이전에 ID가 1인 도큐먼트가 없다면 response상에서 result는 created를 반환합니다. 이때 다시 동일한 입력을 한다면 ID가 1에 해당하는 도큐먼트가 mydoc인덱스에 존재하기 때문에 response상에서 result는 updated를 반환하고 덮어쓰기 됩니다. 덮어쓰기를 방지하기위해 _doc 대신 _create를 사용해야 합니다. PUT mydoc/_create/1 { "title":"안녕하세요", "message":"반갑습니.. 2023. 3. 27.