Elastic Stack/ElasticSearch: 27개의 글
엘라스틱서치는 인덱스에 저장된 문서를 검색할 수 있도록 다양한 검색기능을 제공한다. 문서는 색인시 설정한 Analyzer에 의해 분석과정을 거쳐 토큰으로 분리되는데, 이러한 Analyzer는 색인 시점 말고도 검색 시점에도 이용된다. 특정 문장이 검색어로 요청되면 분석기를 통해 분석된 토큰의 일치 여부를 판단하여 그 결과에 Score을 매긴다. 이러한 엘라스틱서치에서는 다양한 검색 조건을 주기위하여 Query DSL이라는 특수한 쿼리 문법을 제공한다. 1. 검색 API 문장은 색인 시점에 텀으로 분리된다. 검색 시에는 이 텀을 일치시켜야 검색이 가능하다. 엘라스틱서치는 루씬기반이기 때문에 색인 시점에 Analyzer를 통해 분석된 텀을 Term, 출현빈도, 문서번화와 같이 역색인 구조로 만들어 내부적으로..
ELK - Filebeat 란? 만약 많은 애플리케이션이 분산되어 있고, 각 애플리케이션이 로그 파일들을 생성한다고 생각해보자. 만약 해당 로그 파일을 하나의 서버에 일일이 ssh 터미널을 이용하여 로그 파일을 수집하는 것이 합리적인 행동일까? 만약 엄청난 규모의 서비스이고 분산되어 있는 서비스의 애플리케이션이 수백개라고 생각하면 ssh를 이용하는 방법은 생각하기도 싫은 방법일 것이다. 이런 상황에서 Filebeat는 로그와 혹은 파일을 경량화된 방식으로 전달하고 중앙 집중화하여 작업을 보다 간편하게 만들어 주는 역할을 한다. 다시한번 Elastic 공식 홈페이지에서 소개하는 Filebeat를 설명하자면, Filebeat는 로그 데이터를 전달하고 중앙화하기 위한 경량의 Producer이다. 서버에 에이전..
Solr 7.4.x version의 Tagger Handler를 이용한 NER(Named-Entity Recognition) NER이란 자연어에서 뜻이 있는 단어를 뽑아내는 것이다. 챗봇처럼 자연어와 관련있는 기술에서 사용되는 기능인데, 예를 들어 "피자 주문할게요" 라는 질문이 있다. 이 문장에서 유추해 볼 수 있는 것은 "피자 주문" 이것을 더 보편화시켜 보면 "메뉴 주문"이라는 사용자질의 "의도"를 알 수 있다. 만약 "햄버거 주문할게요"라는 질의가 있으면 이 또한 "메뉴 주문"이라는 의도라는 것을 유추할 수 있다. 그럼 사용자가 어떠한 메뉴를 주문한다는 것은 알겠는데 그럼 그 메뉴가 무엇인가? 이러한 것이 챗봇에서는 NER이라는 기술로 추출해 낼 수 있는 단어라는 것이다. "피자 주문할게요"라는 ..
Solr&Zookeeper(솔라&주키퍼) cloud 환경 구성 Mac OS 환경에서 작성되었습니다. solr와 zookeeper를 연동하여 cloud 환경구성하기 입니다. 우선 진행하기 전에 수정 혹은 생성 되어야할 설정 목록입니다. 1)solr.xml : solr cloud를 이루는 solr instance에 관한 설정파일입니다. 2)zoo.cfg : zookeeper 관련 설정파일입니다. 3)collection config file : solr collection들이 가지게 될 schema.xml,solrConfig.xml 등의 파일이 들어가는 config file입니다. 이 파일은 zookeeper에 upconfig하여 모든 solr instance들이 공유하게 됩니다. 4)zooServer Dir..
Elasticsearch local 환경에서 하나의 클러스터에 n개 이상의 노드(인스턴스)생성 데이터 경로는 다른 클러스터의 여러 노드에 의해 공유 될수 있다. 이는 개발 시스템에서 장애 조치 및 다른 구성을 테스트하는데는 유용하다. 하지만 운영환경에서는 하나의 서버당 하나의 노드만 실행하는 것이 좋다. 즉, 하나의 서버에 하나의 노드만 실행시키기 위해서는 node.max_local_storage_nodes:1 로 설정하고, 만약 하나의 머신에서 여러 개의 노드를 실행시키기 위해서는 설정을 1 이상으로 조정해야된다. 만약 한 머신에서 두개 이상의 노드를 운영한다면 샤드들은 elasticsearch에서 자동으로 분배해준다. elasticsearch.yml의 적당한 위치에 node.max_local_stor..
현재 날짜기준 최신버전인 5.4를 설치해보자, 5.x부터 많이 바뀌어서 설치에 문제가 있었다. centos 7을 기준으로 한다. jdk8이 필요하다. 참조문서: https://www.elastic.co/guide/en/elasticsearch/reference/5.4/index.html 1. 설치 5.x부터는 root유저로 돌릴 수 없기때문에, 애초에 useradd를 통해 es_user를 만든 후 진행해야한다. curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.tar.gz tar -xvf elasticsearch-5.4.0.tar.gz cd elasticsearch-5.4.0/bin ./elasticsea..
Elasticsearch 개념 분산형 오픈소스 검색/분석 엔진 동작 원리 기능 데이터 수집 / 집계 구문 분석, 정규화 데이터 검색 역색인(reverted index)을 사용하여 빠른 검색 속도 키워드가 어떤 docs에 있는지 저장 특징 확장성 샤드를 이용한 수평적 규모 확장 고가용성 replica가 데이터의 안정성을 보장 Schema free 스키마 대신 json 문서 구조로 된 데이터 사용 RESTful HTTP의 RESTful API를 통해 데이터 CRUD 작업 Multi-tenancy 서로 다른 인덱스에서 필드명이 같을 경우 한 번에 조회 가능 불변성 수정이 불가하여 Update시, 데이터를 삭제했다가 다시 생성 다중 스레드 환경에서 동시성 문제 회피 (수정이 불가하므로 lock 필요 x) 높은 ..