본문 바로가기

Elasticsearch24

[Elasticsearch] Elasticsearch match vs term, text vs keyword 타입과 분석기 Elasticsearch match vs term, text vs keyword 타입과 분석기match 와 term 쿼리 모두 특정 필드의 내용이 질의어와 일치하는 문서를 찾는데 사용.하지만 일치의 여부를 어떻게 찾는지에 대한 세부사항은 다름matchGET test_index/_search{ "query": { "match": { "title": { "query": "this is something" } } }}필드에 커스텀 분석기(analyzer) or search_analyzer가 존재하는 경우1번에 해당 하지 않으면 기본적으로 standard 분석기를 사용match query의 경우 질의 대상으로 지정된 필드에 analyzer(커스텀 분석기)가 존재하거나.. 2025. 1. 7.
[Elasticsearch] 검색엔진 Elasticsearch.yaml 파일 옵션 정리 elasticsearch 옵션 관련 정리elasticsearch.yamlcluster.name같은 Network에서 여러 클러스터가 존재할 경우, 클러스터 이름으로 클러스터 구분동일한 이름을 가진 노드는 자동으로 같은 클러스터에 속한다nodenode.name : 같은 클러스터 내에서, 각 노드를 식별하는 고유 이름node.mastermaster 노드 역할 지정 여부데이터 노드 관제node.data데이터 노드 역할 지정 여부샤드 및 리플리카 저장쿼리 밎 인덱싱 작업 수행node.ingest인제스트 노드 역할 지정 여부색인하기 전에 데이터 전처리(파이프라인 적용)node.mlML 노드 역할 지정 여부머신러닝 작업 수행(로그 분석, 이상 탐지 등에 사용)node.attr.box_type: livebox_typ.. 2025. 1. 7.
[Elasticsearch] 검색엔진 EC2 인스턴스 타입 변경, iostat 명령어 디스크 I/O 확인 01. ES 색인 속도 증대를 위한 EC2 인스턴스 타입 변경 중 사용한 iostat 명령어최근 AWS에 구동되고 있는 검색 엔진 인덱스 노드(node-i: 색인 시 사용되는 노드)의 인스턴스 유형을 변경해야 했다.기존 c6g.8xlarge를 사용하던 EC2 인스턴스 타입을 c6gd.8xlarge로 변경해야 했다. 이유는 c6g.8xlarge의 경우 EBS Only로 EBS의 경우 네트워크로 연결이 되어 있지만내장 스토리지를 사용하는 c6gd.8xlarge 유형을 사용하기에 색인(인덱싱) 속도를 높히기에는 내장 스토리지를 사용하는 것이 좋다고 판단하였기 때문이다.01-1. 현재 AWS EC2 인덱스 노드 아키텍처현재 인덱스 노드에 데이터 색인 후 데이터 노드로 샤드를 분배하는 과정은 아래와 같다.현재 풀.. 2024. 8. 9.
[Elasticsearch] Elastciearch 클러터에서 특정 Node 제외 시키기 01. Elastciearch 클러터에서 특정 Node 제외 시키기상용 클러스터 상에서 18대로 운영중인 데이터 노드의 개수를 12대로 줄여야 하는 작업이 필요했다.하여 해당 노드가 구동되고 있는 서버 상에서 kill -9 {PID}를 통해 프로세를 중지하여도 되지만,이렇게 되면 클러스터 상태가 Yellow가 되는 것은 물론이며 데이터 손실을 가지고 올 수 있다고 한다.하여 이번 시간에는 클러스터의 Green 상태를 유지하면서 특정 노드를 클러스터 상에서 제외시키는 방법에 대해 알아보자.01-1. 클러스터 상에서 노드 제외# 특정 IP를 가진 노드들을 샤드 재배치 대상에서 제외PUT /_cluster/settings{ "transient": { "cluster.routing.allocation.e.. 2024. 8. 9.
[Elasticsearch] ES 운영중인 Live 서비스의 alias 교체 방법 01. ES 운영중인 Live 서비스의 alias 교체 방법실제 Live 서비스 중에 핵심 메타인 인덱스의 alias를 변경해야 하는 순간이 왔다상용 Live 서비스이기에 상당히 부담감이 심했지만, 어떻게든 alias를 교체해야 했다이번에는 alias를 near real time으로 변경한 방법에 대해 기재한다01-1. alias 변경 필요 이유기존 메타 인덱스(alias-xxx-meta)의 경우 shard 개수가 6개 replica 개수가 1개로 지정되 있었다하지만 서비스 이슈로 인하여 데이터 노드를 6개 -> 18개로 증설하는 작업이 있었다여기서 보면 shard가 6개인데 replica가 1개이면6(shard) * (1(replica) + 1) = 12개의 샤드 생성18(데이터 노드 개수) / 12개.. 2024. 8. 9.
[Elasticsearch] ES 클러스터 운영 중 노드 순차적 재시작(Rolling Restart) 01. ES 클러스터 운영 중 노드 순차적 재시작(Rolling Restart)상용 ES를 운영하던 도중 데이터 노드의 CPU가 90%를 넘겨서 재기동을 진행해야 했다또한 Thread 상태를 확인해본 결과 rejected 된 결과가 1,414,844개가 쌓여 있었다❌ 하지만 데이터 노드를 그냥 재기동해버리면 해당 노드의 데이터에 문제가 발생할 수 있다이러한 이유로 인해 서비스를 운영하는 도중에 데이터 노드를 재기동 하는 방법에 대해 기재한다01-1. 이슈 내용 확인특정 data node(2대)의 CPU가 3분간 98% 유지# 현재 ES thread_pool에서 rejected 된 thread 상태 및 원인 내용 확인GET _cat/thread_pool?v&s=rejected:desc# Kibana 상에서.. 2024. 8. 9.
[Logstash] Linux 파일 삭제 후 용량 확보 안되는 경우 (feat. Logstash) 01. Linux 파일 삭제 후 용량 확보 안되는 경우 (feat. Logstash & Shell Script)shell script를 통해 EC2 서버상의 특정 경로에 있는 파일을 실시간으로 압축 후 S3로 올리는 프로세스가 존재하였다.이 때 Linux 서버상의 파일은 존재하지 않으나 디스크 사용량이 지속적으로 증가하는 이슈가 발생하였다.이러한 이슈에 대해 간단히 정리를 진행 해보자.01-1. 시스템 현황현재 ECS의 Container로 떠있는 filebeat가 마운트 경로에서 파일을 읽어서 EC2의 구동되고 있는 Logstash로 파일을 전달한다.후에 Logstash는 실시간으로 파일을 읽어 특정 경로에 저장 및 ES에 로그를 저장한다. 이때 정각 10분마다 shell scripts를 사용하여S3에 .. 2024. 8. 9.
[Elasticsearch] Elasticsearch reindex 방법 01. Elasticsearch 재색인?기존 검색엔진을 운영하는 과정 중에 동의어 관련된 작업을 수행하기 위해 핵심 메타 템플릿을 수정해야 하는 경우가 발생하였다. 하여 STG 환경에서 기존에 생성이 되어있는 2300만건 정도의 데이터를 Logstash + DB 프로시저를 사용하여 색인하는 방식 대신 reindex 명령어를 사용하여 데이터를 복사하는 과정을 적어보았다 😀상용 서비스의 경우 현재 alias를 사용하고 있고 i-node에 신규 인덱스를 생성해서 인덱싱을 수행하고 후에 해당 인덱스의 routing.allication.require.box*type option 이 index로 설정이 되어 있고, python 로직에서routing.allocation.require.boxtype option을 l.. 2024. 4. 12.
[Elasticsearch] 인덱스와 샤드 - Index & Shards 01. 인덱스와 샤드 - Index & Shards01-1. 도큐먼트(document)?{ "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ // n개의 document를 포함 { "_index" : "seed-group", "_type" : "_doc", "_id" : "3W5esI0B0pf4.. 2024. 2. 16.
[ES 사내 스터디] 엘라스틱스택 4회차 사내 스터디 Elastic Stack 4th 집계 스터디엘라스틱 스택의 핵심 기술인 집계를 제대로 분석📌 목차엘라스틱서치: 집계집계의 요청: 응답 형태메트릭 집계버킷 집계집계의 조합파이프라인 집계📌 1-1 엘라스틱서치: 집계엘라스틱서치의 집계란?데이터를 그룹핑( Grouping )하고 통계값을 얻는 기능이다RDB SQL의 GROUPBY와 통계 함수를 포함하는 개념이다엘라스틱서치의 집계 예시데이터를 날짜별로 묶거나 특정 카테고리별로 묶어 그룹별 통계를 작성한다✔ 1-2 엘라스틱서치: 집계집계 기능의 효과엘라스틱서치의 검색 기능과 맞물려 엘라스틱서치를 고성능 집계 엔진으로 활용대표적인 활용 사례로는 키바나( 데이터 시각화 도구 )가 존재한다키바나의 시각화 대시보드는 대부분 집계 기능을 기반으로 동작한다사용해야 하는 .. 2023. 4. 25.