본문 바로가기

Backend Study/ELK Stack

(15)
[Elastic Search ] Logstash - mysql 연동하기 mysql의 데이터를 사용해서 elastic search에서 검색을 하기 위해서는 elastic search 에 우리의 데이터베이스에 있는 데이터들을 담는 작업을 따로 해줘야한다. 그리고 elastic search와 database를 일정 간격으로 동기화해주는 작업은 필수이다! 이를 위한 도구로서 logstash를 사용할 것이다. logstash가 무엇인지는 아래 링크 참고하자. [Elastic Search] ELK 로컬환경에 설치하기, 버전 변경하기 (for MAC) 검색 시스템을 구축하기 위해 먼저 ELK Stack 환경을 구성하려고한다. (ELK는 Elastic Search와 Logstash, Kibana를 앞글자만 딴 단어이다.) 스럽 ELK Stack 구성 Java 11 Elastic Searc..
[Elastic search] 데이터 검색 엘라스틱 서치는 인덱스에 저장된 문서를 검색할 수 있도록 다양한 검색 기능을 제공한다. 문서는 색인시 설정한 분석기에 의해 분석 과정을 거쳐 토큰으로 분리되는데, 이러한 분석기는 색인 시점에 사용할 수 있지만 검색 시점에 사용하는 것도 가능하다. (분석기에 대한 내용 아래 링크 참고) [Elastic Search] 데이터 모델링 엘라스틱서치에서는 색인할 때 문서의 데이터 유형에 따라 필드에 적절한 데이터 타입을 지정해야한다. 이러한 과정을 매핑이라하며, 매핑은 색인된 문서의 데이터 모델링이라고도 할 수 있다. gyu-ree.tistory.com 특정 문장이 검색어로 요청되면 분석기를 통해 분석된 토큰의 일치 여부를 판단해서 그 결과에 점수를 매긴다. 그리고 이를 기반으로 순서를 적용해 결과를 사용자에게 ..
[Elastic Search] ELK 로컬환경에 설치하기, 버전 변경하기 (MAC) 검색 시스템을 구축하기 위해 먼저 ELK Stack 환경을 구성하려고한다. (ELK는 Elastic Search와 Logstash, Kibana를 앞글자만 딴 단어이다.) 스럽 ELK Stack 구성 Java 11 Elastic Search 7.0 Logstash 7.0 Kibana 7.0 Elasticsearch는 검색 및 분석을 위한 오픈 소스 분산 검색 엔진이고, Kibana는 Elasticsearch로부터 수집된 데이터를 시각화하고 분석하는 데 사용되는 오픈 소스 도구이다. Elasticsearch와 Kibana와 함께 사용하면 데이터 수집, 분석 및 시각화를 효과적으로 수행할 수 있다. Logstash는 데이터 처리 파이프라인을 구축하기 위해 사용되며, 수집기능을 해준다. 이러한 도구들을 함께 ..
[Elastic Search] 기본 개념잡기 Elastic search란? Apache Lucene( 아파치 루씬 ) 기반의 Java 오픈소스 분산 검색 엔진이다. Elasticsearch를 통해 루씬 라이브러리를 단독으로 사용할 수 있게 되었으며, 방대한 양의 데이터를 신속하게, 거의 실시간( NRT, Near Real Time )으로 저장, 검색, 분석할 수 있다. 스럽에서는 주로 검색을 위해 활용하고 있다. 본격적인 Elastic Search를 스터디하기 전에 검색 시스템에 대해 알아보자. 1. 검색 시스템이란 무엇인가? 검색 시스템이란? 검색 시스템은 사용자가 원하는 정보를 빠 르게 검색할 수 있는 기능을 제공하는 소프트웨어 시스템이다. 네이버와 구글에서 사용자들이 가장 많이 쓰는 서비스는 사용자가 원하는 검색어에 대한 결과를 제공하는 검색..
[Elastic Search] 동의어사전 Tokenizer에 의해 토큰이 분리되면 다양한 토큰 필터를 적용해서 가공이 가능하다. 그중에서 동의어 처리에 대한 필터는 엘라스틱서치에서 제공하는 Synonym 필터를 사용한다. 동의어 사전은 원문에 특정 단어가 존재하지 않아도 색인 데이터를 토큰화해서 동의어나 유의어에 해당하는 단어를 함께 저장하여 검색이 가능하도록 하는 기능이다. 동의어를 추가하는 방법은 크게 두가지로, 동의어를 매핑 설정 정보에 미리 파라미터로 등록하거나 특정 파일을 별도로 생성해서 관리할 수 있는데 대부분 후자를 이용한다. 동의어 파일은 엘라스틱서치가 설치된 서버 아래 config 디렉토리에 생성한다. 저장 방식 1. 동의어 추가: 단어를 쉼표로 분리하여 등록한다. "Elasticsearch"와 "엘라스틱서치"를 동의어로 지정하..
[Elastic search] 데이터 검색 엘라스틱서치는 인덱스에 저장된 문서를 검색할 수 있도록 다양한 검색 기능을 제공한다. 문서는 색인 시 설정한 분석기에 의해 분석 과정을 거쳐 토큰으로 분리되는데, 이러한 분석기는 색인 시점에 사용할 수도 있지만 검색 시점에서 사용하는 것도 가능하다. 특정 문장이 검색어로 요청되면 분석기를 통해 분석된 토큰의 일치 여부를 판단해서 그 결과에 점수를 매긴다. 검색 대상이 되는 필드는 분석이 되는 Text 타입의 유형이 될 수도 있고, 분석이 되지 않는 Keywork 타입의 유형이 될 수도 있다. 엘라스틱서치에서는 다양한 검색 조건을 충족시키기 위해 Query DSL이라는 특수한 쿼리 문법을 제공한다. uri로 검색어를 보내는 방법과 request Body로 검색하는 방법이 있다. elastic search에..
[Elastic Search] 데이터 모델링 엘라스틱서치에서는 색인할 때 문서의 데이터 유형에 따라 필드에 적절한 데이터 타입을 지정해야한다. 이러한 과정을 매핑이라하며, 매핑은 색인된 문서의 데이터 모델링이라고도 할 수 있다. 이는 관계형 데이터베이스에서 ERD 설계만큼 매우 중요한 과정이다! 조금 더 구체적으로 설명하면, 매핑은 색인 시 데이터가 어디에 어떻게 저장될지를 결정하는 설정이다. 데이터베이스의 저장소로 볼 수 있는 인덱스에 데이터가 추가될 때 그 데이터의 타입을 구체적으로 정의하는 일이다. 스럽 서비스에서 가장 간단한 인덱스를 예시로 들어 설명할테니 차근 차근 이해해보자. 1. 매핑 인덱스 만들기 매핑 정보를 설정할 때는 다음과 같은 사항을 고민해야 한다. - 문자열을 분석할 것인가? - _source에 어떤 필드를 정의할 것인가? ..
[ElasticSearch] Rdbms와 ElasticSearch 연동하기 1. Rdbms와 ElasticSearch 연동 조건 elasticSearch를 이용해서 검색엔진을 개발하려면 그 서비스에서 사용하고 있는 데이터베이스와 연동이 필수적이다. 원할한 검색 엔진을 만들기 위해서는 JDBC 입력 플로그인에 있는 Logstash를 이용하여 ElasticSearch와 MYSQL 동기화를 유지해야한다. 정확히 작동하려면 RDBMS에 몇가지 조건이 필요하다. 조건 1. MySQL 문서가 ElasticSearch로 작성될 때, ElasticSearch의 "_id" 필드는 MySql "id" 필드로 설정되어야한다. 이렇게 설정하면 MySQL 레코드와 ElasticSearch 문서간에 직접 매핑을 제공해준다. 레코드가 MySQL에서 업데이트 되는 경우, 연결된 문서 전체가 ElasticS..