Backend Study (61) 썸네일형 리스트형 [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에 어떤 필드를 정의할 것인가? .. [Server] Maven과 Gradle의 차이 1. Maven이란? 개발 프로젝트를 진행하면 많은 라이브러리를 사용하게 되는데, 이를 일일이 관리하는 것은 매우 어려운 일이다. Maven은 이러한 문제를 해결해주는 도구라고 생각하면 된다. 라이브러리도 해당 라이브러리 기능을 수행하기 위해 또 다른 라이브러리를 필요로 하기도 하는데, 이런것 까지 모두 고려하여 관리해주고, 네트워크를 통해 자동으로 다운받아주는 역할을 한다. 실행을 위해 여러가지 단계를 거치는데 이를 Lifecycle이라고한다. 아마 많이 본 용어일 것이다. 빌드 단계라고 보면 된다. - Clean: 이전 빌드에서 생성된 파일들을 삭제하는 단계 - Validate: 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인하는 단계 - Compile: 프로젝트의 소스코드를 .. [Git] 로컬 혹은 fork한 레포 upstream과 동기화하기 1. 연결된 저장소를 확인한다. git remote -v 2. upstream과 연결한다. git remote add upstream [링크] origin일 경우 " git remote add origin " 3. upstream으로부터 fetch 한다. git fetch upstream 4. upstream 레포에 로컬 내용을 merge 혹은 push 한다. // merge git merge upstream/main // push git push -u upstream main 참고 ) https://theubermensch.tistory.com/100 [ElasticSearch] Rdbms와 ElasticSearch 연동하기 1. Rdbms와 ElasticSearch 연동 조건 elasticSearch를 이용해서 검색엔진을 개발하려면 그 서비스에서 사용하고 있는 데이터베이스와 연동이 필수적이다. 원할한 검색 엔진을 만들기 위해서는 JDBC 입력 플로그인에 있는 Logstash를 이용하여 ElasticSearch와 MYSQL 동기화를 유지해야한다. 정확히 작동하려면 RDBMS에 몇가지 조건이 필요하다. 조건 1. MySQL 문서가 ElasticSearch로 작성될 때, ElasticSearch의 "_id" 필드는 MySql "id" 필드로 설정되어야한다. 이렇게 설정하면 MySQL 레코드와 ElasticSearch 문서간에 직접 매핑을 제공해준다. 레코드가 MySQL에서 업데이트 되는 경우, 연결된 문서 전체가 ElasticS.. 이전 1 2 3 4 5 ··· 8 다음