본문 바로가기

Backend Study/ELK Stack

(15)
[ElasticSearch] 기본 개념 1. 엘라스틱 서치의 특징 1.1. 분산/확장성/병렬처리 엘라스틱 서치 구성 시 보통 3개 이상의 노드(엘라스틱서치 서버)를 클러스터로 구성하며, 데이터를 샤드로 저장시 클러스터 내 다른 호스트에 복사본을 저장해두기 때문에 하나의 노드가 죽거나 샤드가 깨져도 복제되어 있는 다른 샤드를 활용한다. 데이터 분산과 병렬처리가 되므로 실시간으로 검색 및 분석할 수 있고, 노드르 수평적으로 늘릴 수 있다. 또한 노드를 클러스터에 추가할 수 있다. 2. 클러스터 하나 이상의 노드(서버)가 모인 것이며, 전체 데이터를 저장하고 모든 노드를 포괄하는 통합 색인화 및 검색 기능을 제공한다. 고유의 이름으로 식별되고, 기본 이름은 "elasticsearch"이다. 어떤 노드가 어느 클러스터에 포함되기 위해서는 이름에 의해..
엘라스틱서치 키바나로 스냅샷 생성하기 1. elasticsearch.yml에 path.repo 속성을 설정한다. ex. path.repo: ["/search_example", "/agg_example"] 2. 스냅샷 레포지토리를 생성한다. repository는 실제 스냅샷이 저장되는 장소이다. PUT /_snapshot/search_example { "type": "fs", "settings": { "compress": true, "location": "/Users/kimkyuri/Documents/elasticsearch/elastic-book-snapshot-master/book_backup/search_example" } } 3. 스냅샷 생성하기 스냅샷이 있는지 확인하기 PUT /_snapshot/search_example/movie_..
4. 데이터 검색 엘라스틱서치는 인덱스에 저장된 문서를 검색할 수 있도록 다양한 검색 기능을 제공한다. 문서는 색인시 설정한 분석기에 의해 분석 과정을 거쳐 토큰으로 분리되는데, 이러한 분석기는 색인 시점에 사용할 수 있지만 검색 시점에 사용하는 것도 가능하다. 특정 문장이 검색어로 요청되면 분석기를 통해 분석된 토큰의 일치 여부를 판단해서 그 결과에 점수를 매긴다. 이를 기반으로 순서를 적용해 결과를 사용자에게 최종적으로 출력한다. 4.1 검색 API * 엘라스틱 서치는 색인 시점에 Analyzer를 통해 분석된 텀을 Term, 출현빈도, 문서번호와 같이 역색인 구조로 만들어 내부적으로 저장한다. 검색 시점에는 keyword 타입과 같은 분석이 불가능한 데이터와 Text 타입과 같은 분석이 가능한 데이터를 구분해서 분석..
3.4 엘라스틱서치 분석기 3.4.1 텍스트 분석 개요 POST _analyze { "analyzer" : "standard", "text" : "우리나라가 좋은나라, 대한민국 화이팅" } -> 결과로 우리나라 / 좋은나라 / 대한민국 / 화이팅 따로 나옴 3.4.2 역색인 구조 - 모든 문서가 가지는 단어의 고유 단어 목록 - 해당 단어가 어떤 문서에 속해있는지에 대한 정보 - 전체 문서에 각 단어가 몇 개 들어있는지에 대한 정보 - 하나의 문서에 단어가 몇 번씩 출현했는지에 대한 정보 * 색인한다는 것은 역색인 파일을 만든다는 것이다. 원문이 변경되는 것이 아니라 색인 파일에 들어갈 토큰만 변경되어 저장되고 실제 문서 내용은 변함없이 저장된다. 색인할 때 특정한 규칙과 흐름에 의해 텍스트를 변경하는 과정을 분석(analyze)..
3. 데이터 모델링 3.1 매핑 API 매핑이란? 색인 시 데이터가 어디에 어떻게 저장될지를 결정하는 설정. 인덱스에 추가되는 각 데이터 타입을 구체적으로 정의한다. 다음과 같은 사항을 고민해야한다. - 문자열을 분석할 것인가? - _source에 어떤 필드를 정의할 것인가? - 날짜 필드를 가지는 필드는 무엇인가? - 매핑에 정의되지않고 유입되는 필드는 어떻게 처리할 것인가? 인덱스 생성: PUT movie_search 매핑 확인: GET movie_search/_mapping 3.1 매핑 파라미터 analyzer: 해당 필드의 데이터를 형태소 분석하겠다. text 데이터 타입의 필드는 analyzer 매핑 파라미터를 기본적으로 사용한다. normalizer: keyword 데이터 타입의 경우 원문 기준으로 문서가 색인되..
02. 엘라스틱서치 살펴보기 #실행 elasticsearch #설정파일 sudo find / -name elasticsearch.yml #위치 /opt/homebrew/etc/elasticsearch/elasticsearch.yml 2.1.1 기본 용어 인덱스 데이터 저장 공간이다. 하나의 인덱스는 하나의 타입만 가지며 하나의 물리적인 노드에 여러 개의 논리적인 인덱스를 생성할 수 있다. 분산 환경으로 구성하면 하나의 인덱스가 여러 노드에 분산 저장되어 관리된다. 엘라스틱 서치는 기본적으로 5개의 프라이머리 샤드와 1개의 샤드 세트를 생성한다. 인덱스 이름은 모두 소문자여야한다. 샤드 색인된 문서는 하나의 인덱스, 인덱스 내부에 색인된 데이터는 물리적인 공간에 여러 개의 파티션으로 나누어 구성되는데 이 파티션이 샤드이다. 문서 데이..
검색 시스템 이해하기 이번에 대학교 선배가 운영하는 앱의 검색 엔진 개발을 부탁받게되었다. 수목원 프로젝트에서도 검색 엔진을 우리 회사에서 개발했는데, 내 담당부분이 아니라서 직접적으로 다뤄볼 기회가 없었다. 프로젝트 개발도 해야하고 담당자분에 퇴사 예정에 있어 유지보수를 내가 할 예정이라 차근차근 공부해보려고 한다! Start! 1. 검색 시스템이란? 용어 정리 검색 엔진: 광활한 웹에서 정보를 수집해 검색 결과를 제공하는 프로그램, 검색 결과로 제공되는 데이터의 특성에 따라 구현 형태가 달라진다. 검색 시스템: 대용량 데이터를 기반으로 신뢰성 있는 검색 결과를 제공하기 위해 검색 엔진을 기반으로 구축된 시스템. 내부의 정책에 따라 관련도가 높은 문서를 검색 결과의 상위에 배치할 수 있다. 검색 서비스: 검색 결과를 서비스..