Elasticsearch

Elasticsearch

[Elasticsearch] maximum shards open error

현재 회사에서 Elasticsearch를 운영하고 있다. Elasticsearch는 매일 monitoring-es ~라는 인덱스를 자동으로 인덱싱 한다. 해당 인덱스는 X-Pack 모니터링 기능이 활성화되어 있을 때 자동으로 생성되며, 클러스터의 성능, 상태 및 메트릭에 대한 상세 정보를 포함한다. 보통 monitoring-es 인덱스는 아래와 같은 정보를 저장해 준다. 1) 클러스터 상태 정보 클러스터의 건강 상태, 노드 수, 인덱스 수, 샤드 수 등 클러스터 전반에 대한 상태 정보. 2) 노드 메트릭 각 노드의 CPU 사용량, 메모리 사용량, 디스크 I/O 통계, JVM 통계(가비지 컬렉션, 힙 메모리 사용량 등), 네트워크 사용량 등 노드별 성능지표. 3) 인덱스 메트릭 각 인덱스의 샤드 할당 상태..

Elasticsearch

[Elasticsearch] 검색성능 비교

검색이란? 검색은 정보를 찾기 위해 인터넷이나 컴퓨터 데이터베이스 등을 통해 특정한 키워드나 질의문을 이용하여 원하는 정보를 찾는 과정을 말한다. 검색 엔진을 통해 수많은 웹 페이지, 문서, 이미지, 동영상 등이 색인화되어 있어 사용자가 키워드를 입력하면 해당 키워드와 관련된 정보를 검색 결과로 제공한다. 검색은 다양한 형태로 이루어질 수 있다. 가장 기본적인 검색은 텍스트 기반의 검색이며, 사용자가 키워드나 질의문을 입력하여 관련된 문서를 찾는다. 이외에도 이미지 검색, 동영상 검색, 뉴스 검색, 지도 검색 등 다양한 형태의 검색이 가능하다. 검색 엔진은 크롤러라고 불리는 프로그램을 이용하여 웹 페이지를 수집하고, 이를 색인화하여 검색 결과를 생성한다. 대표적인 검색 엔진으로는 Elasticsearch..

Elasticsearch

[Elasticsearch] Nori 분석기 적용

Nori 분석기란? Elasticsearch Nori 분석기는 한국어 텍스트를 처리하기 위해 개발된 Elasticsearch의 기본 제공 분석기이다. Nori 분석기는 주로 다음과 같은 작업을 수행한다. 1. 토큰화(Tokenization) 한국어 문장을 형태소 단위로 분리한다. 형태소는 문장에서 의미를 갖는 최소 단위로서, 일반적으로 명사, 동사, 형용사 등이 될 수 있다. Nori는 형태소 분석을 위해 색인 전에 형태소 단위로 문장을 쪼갠다. 2. 어휘 형태소 분석(Lexical Token Analysis) Nori는 어휘 사전을 사용하여 형태소를 분석한다. 어휘 사전은 일반적인 단어와 함께 한국어의 특수한 언어 현상을 처리하는 데 사용되는 사전이다. Nori는 품사 태깅, 불규칙 활용 형태소 처리,..

Elasticsearch

[Elasticsearch] Disk-based shard allocation

Disk-based shard allocation 이란? disk-based shard allocation 이란 elasticsearch 서버 내부의 디스크를 파악하고 효율적인 데이터 분산처리를 위한 자동화 옵션이다. elasticsearch는 새로운 샤드를 어디에 할당할지 결정하기 전에 disk-based shard allocator 를 통해서 노드의 사용 가능한 디스크 공간을 고려한다. disk-based shard allocator 의 옵션은 elasticsearch.yml 파일을 통해 수정하고 재시작하거나 cluster-update-setting API를 통해 운영 상태의 클러스터에서도 변경할 수 있다. 기본적으로 disk-based shard allocator 는 1) low watermark ..

Elasticsearch

[Elasticsearch] text, keyword 타입

text, keyword 타입이란? Elasticsearch에서 지원하는 데이터타입 요소로써 text, keyword 모두 문자열을 나타내기 위한 타입이다. 하지만, text 타입은 Full-text search를 위해 토큰이 생성되지만, keyword 타입은 Exact Matching을 위한 토큰이 생성된다. 여기서 Full-text search 이란, 문서의 전체 텍스트에 키워드나 구문을 일치시켜 관련 문서를 검색할 수 있는 기술이다. Exact Matching 은 검색 중인 정확한 용어 또는 구문과 일치하는 문서만 반환하는 검색 기술이다. 그럼 직접 analyzer를 지정하여 Full-text search, Exact Matching 가 어떤 식으로 다른지 확인해 보자. 1. Full-text se..

Elasticsearch

[Elasticsearch] 검색(Search)

검색과정이란? 검색과정은 요청된 검색어를 분석한 다음 해당 검색어를 토대로 Inverted Index에서 검색을 진행한 후에 매칭되는 결과를 검색결과로 표시해주는 일련의 행위를 말한다. Inverted Index Inverted Index 란 문자열을 분석한 결과를 저장하고 있는 구조체이다. 예를 들어 Elasticsearch에 위와 같은 두 개의 문서를 색인(Indexing) 시켰다고 가정해 보자. 첫 번째 Document id는 1 이고 두번째 Document id 는 2라고 가정하자. 그럼 Elasticsearch 엔진은 색인과정에서 문자열을 구성하고 있는 단어들을 분석기(analyzer)를 통해서 토큰으로 분류하고 해당 토큰이 어떤 문서에 있는지 정보를 추가해 줘서 오른쪽과 같은 inverted ..

Elasticsearch

[Elasticsearch] 색인 (Indexing)

색인(Indexing)이란 색인(Indexing)이란 문서를 분석하고 저장하는 과정을 색인이라고 한다. 색인의 과정을 도식화해보면 아래와 같다. 예를 들어서 SERVER 3개에 Elasticsearch 가 Cluster 형태로 구성되어 있다고 가정해 보자. 1) movie 인덱스에 1001번 아이디를 가진 데이터를 NODE A에 PUT 한다. 2) NODE A에서 Primary shard를 하나 생성하고 해당 서버가 아닌 다른 서버에 Replica shard 를 하나 생성해 준다. (shard 1, replica 1 이 기본값임) 그다음 현재 Primary shard의 데이터를 복사해 준다. 그럼 다음으로 NODE B로 id 가 1002인 데이터가 PUT 된다고 가정해 보자. 1) movie 인덱스에 1..

Elasticsearch

[Elasticsearch] Shard 란?

샤드(Shard) 란 인덱스가 색인되는 문서가 실제로 저장되는 공간을 의미한다. 하나의 인덱스는 반드시 하나 이상의 샤드를 가진다. 샤드는 크게 Primary shard , Replica shard로 나뉜다. 종류 역할 Primary shard 문서가 저장되는 원본 샤드이다. 색인과 검색 성능에 모두 영향을 준다. Replica shard Primary shard 의 복제 샤드이다. Primary shard 에 문제가 생기면 Replica shard 가 Primary shard 로 승격된다. 문서의 색인과정은 Primary shard 에서 먼저 분석 과정이 이루어지고 저장이 된 다음에 해당 문서가 Replica shard 로 복제되는 구조이다. Replica shard 의 개수보다 Primary shar..

Elasticsearch

[Elasticsearch] Cluster, Node 란?

Cluster, Node 란? 일반적인 Cluster 의 정의는 "여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합" 을 말한다. Elasticsearch 도 여러대의 노드(컴퓨터와 대응되는 개념) 들이 각자의 역할을 바탕으로 연결되어 하나의 시스템처럼 동작한다. Node 의 종류 1) 마스터 노드 (Master Node) : 클러스터 상태 관리 및 메타 데이터 관리 2) 데이터 노드 (Data Node) : 문서 색인 및 검색 요청 처리 3) 코디네이팅 노드 (Coordinating Node) : 검색 요청 처리 4) 인제스트 노드 (Ingest Node) : 색인되는 문서의 데이터 *전처리 *전처리 : 어떤 문서가 ES 내에 들어와서 저장이 되기 이전에 수정한다는 의미. 마스터..

Elasticsearch

[Elasticsearch] Elasticsearch 란?

Elasticsearch 란? 1. 루씬 기반의 오픈소스 검색 엔진이다. 루씬이란 자바 언어로 이루어진 정보 검색 라이브러리이다. 루씬 라이브러리를 통해서 색인과 검색을 가능하게 한다. json 기반의 문서를 저장하고 검색할 수 있으며 분석 작업도 가능하다. 2. 준 실시간 검색 시스템 실시간이라고 생각 될 만큼 색인된 데이터가 빠르게 검색된다. 3. 고가용성(HA)를 위한 클러스터를 구성할 수 있다. 한 대 이상의 노드로 클러스터를 구성하여 높은 수준의 안정성을 보장하고 부하 분산을 통해 안정적인 데이터 처리가 가능하다. 4. 동적 스키마 생성 가능 입력될 데이터들에 대해 미리 스키마를 정의하지 않아도 자동으로 스키마가 생성된다. 일반적으로 RDBMS 에서는 특정한 데이터를 저장하기 위해서는 스키마 지..

ssh9308
'Elasticsearch' 카테고리의 글 목록