비츠(Beats)는 컴퓨터, 네트워크, 앱과 같은 데이터를 전송하는 경량 데이터 전달자이다. Beats인 이유는 비츠라는 어플리케이션 하나로 구성된 것이 아니라 상황에 맞게 다양한 비트(Beat)가 있기 때문이다. 로그스태시(Logstash)와 비교 엘라스틱서치에 데이터를 전달해주는 역할로는 로그스태시(Logstash)도 존재하는데 로그스태시는 다양한 소스에서 데이터를 수집하는 커다란 데이터 전송 솔루션이라 본다면 비츠는 로그스태시에 비해 차지하는 공간이 작고, 더 적은 리소스를 사용한다. 게다가 비츠는 수집해야 하는 서버에 에이전트를 설치하는 식이라 목적은 같지만 사용하는 방식이 완전 다르다 할 수 있다. 아래는 엘라스틱서치에서 설명하는 로그스태시와 비츠의 비교내용이다. Beats는 서버에 에이전트로 ..
자바(Java)로만 엘라스틱서치(Elastic Search)에 대해서 다뤄봤는데 이번에는 파이썬(Python)으로 엘라스틱 서치를 다뤄보도록 하겠습니다. 데이터는 추후 주가 분석을 등을 하기 위해서, 삼성전자의 주식 데이터를 저장해보는 것으로 해보겠습니다. 삼성전자 주식 데이터 야후의 Finance라는 사이트에 가시면, 종목을 입력할 수 있고 삼성전자의 종목(005930.KS)[1]를 입력하면 위와 같이 삼성전자 종목 정보로 넘어갑니다. 화면의 붉은색 네모박스로 체크한 곳을 보면, Download라고 되어 있는데 이 곳을 클릭하면, 삼성전자의 Historical Prices 데이터를 받을 수 있습니다. 귀찮은 분들을 위해서 아래의 파일을 받으셔도 됩니다. 삼성전자 주가 데이터 직접 위 사이트에서 받으시거..
엘라스틱서치(Elastic Search)에서 다양한 설정을 담는 config 파일은 {elasticsearch}/config 폴더에 있는 elasticsearch.yml 파일에 있다. 이 파일을 오픈하면 노드 및 샤드, 클러스터, 로그 위치, 접근 IP 등 다양한 설정을 할 수 있는데 당연히 엘라스틱서치를 운영할 계획이라면 필수 설정 정도는 알고 있어야 될 것이다. 다음의 옵션은 변경되어서 다른 방식 혹은 명칭이 바뀔수도 있고 삭제되었을 수도 있다. 엘라스틱버전에 따라 같은 속성값을 계속 유지하는 것이 아니기 때문에 매 버전에 따라 설정값이 변경되었는지 확인을 하는 것도 중요할 것이다. 설정 항목 cluster.name - 클러스터들은 같은 클러스터의 이름을 가진 경우 묶을 수 있는데 여기서 지정을 할 ..
본 포스팅에는 형태소 분석기등을 이용하여 검색을 하는 고급적인 부분들을 제외한 검색방법을 다뤄보는 포스팅이다. 이전 포스팅에서 주식에 관련된 정보를 stock이라는 인덱스에 넣어보긴 했었으나, 삼성전자에 대한 레코드만 넣었기 때문에 포스팅의 편의를 위하여 최근에 말도 많고 탈도 많은 방탄소년단의 빅히트와 블랙핑크의 와이지엔터테인먼트(YG) 주식 정보를 포함하여 총 3건의 레코드를 stock 인덱스에 추가한 후 검색을 하는 형태를 진행하고자 한다. 포스팅에 사용된 레코드 정보 PUT /stock/_doc/1 { "stockId" : "1", "stockNm" : "삼성전자", "stockType" : "보통주", "stockCd" : "005930", "trade" : "KOSPI", "current" :..
엘라스틱서치의 장점 중 하나는 바로 스키마리스(Schemaless)가 가능하다는 점이다. 이로 인해서 DB를 설계가 편리해지고 개발하는 과정에서 힘든 부분을 상쇄할 수 있다. 하지만 스키마리스는 양날의 검이 될 수 있는데 원치 않는 스키마로 인해서 색인이 이상하게 될 경우, 검색에 문제가 있거나 퍼포먼스 측면에서 떨어질 수 있다. 개발을 진행중에는 스키마를 등록하지 않고 진행할 수 있겠지만, 데이터 설계가 끝날 즈음에는 스키마를 등록하여 데이터 구조를 고정시키고 원하는 형태의 검색이 가능하게 만들어야 될 것이다. Schemaless 케이스 우선 스키마리스의 문제부터 파악해보도록 한다. 다음과 같이 주식에 관련된 데이터를 검색엔진에 넣었다고 가정을 해본다. PUT /stock/_doc/1 { "stockI..
마스터 노드(Master Node) - 클러스터를 관리하는 노드로 인덱스를 생성, 삭제하는 등 클러스터와 관련된 전반적인 작업을 담당하는 노드 - 가장 성능이 좋고 네트워크 속도가 빠르며 지연이 없는 노드를 선정해서 사용 - 다수의 노드를 설정할 수 있지만 하나의 노드만 선출되어 동작 설치폴더/config/elasticsearch.yml 에서 아래 내용 추가 node.master: true node.data: false node.ingest: false search.remote.connect: true 데이터 노드(Data Node) - 실질적인 데이터를 저장하며 검색과 통계 같은 데이터 관련 작업 수행 - 마스터와 분리해서 구성하는 것을 추천하며 컴퓨터 리소스를 많이 소모하기 때문에 모니터링 필요 설치..
PUT과 POST를 비교하여 데이터를 저장하는 것을 한적이 있는데 이번에는 PUT과 POST를 활용하여 데이터를 갱신(update)하는 것을 실습해본다. 해당 포스팅의 내용은 키바나를 연결하여 console 창에 테스트를 진행하며, 만약 사용하는 방법을 모르고 있다면 [키바나] 설치 및 엘라스틱서치 연동 위의 내용을 확인하여, 우선 키바나를 설치하고 콘솔창을 활용하는 법을 익히도록 하자 PUT 명령어로 갱신 PUT로 데이터를 갱신하는 방법은 다음과 같다. PUT /// { 내용... } PUT으로 데이터를 입력해보았으면 위 내용이 입력하는 방법과 동일한 것을 알 수 있을 것이다. PUT은 데이터가 있으면 UPDATE로 수정을 하고, 없을 경우 INSERT를 실행하는 즉 INSERT_OR_UPDATE 명령..
엘라스틱서치(Elastic search)에서 매우 쉽게 데이터를 가져오는 방법으로 GET 명령어를 활용하는 방법이 있다. 예를 들어, 내가 어떤 레코드들의 데이터 ID를 알고 있다고 가정을 해보자. PUT으로 데이터를 저장하였다면, 아이디를 애시당초 입력을 하기 때문에 GET으로 데이터를 가지고 오는데 전혀 문제가 없을 것이다. GET으로 가져오기 GET /// GET 명령어는 PUT과 사용법이 동일하다. 다만 PUT은 입력할 데이터를 추가로 적지만, GET은 인덱스, 타입, 아이디까지만 입력하면 된다. { "_index" : "article", "_type" : "_doc", "_id" : "2", "_version" : 1, "_seq_no" : 1, "_primary_term" : 1, "found..
엘라스틱서치에서는 데이터를 핸들링하는 CRUD 명령어를 강력하고 깔끔한 Rest API형태로 제공하여 쉽게 데이터를 검색, 저장, 갱신, 삭제 등의 작업을 할 수 있다. 그 중 처음에는 뭘 써야 될지 헷갈릴 수 있는 Put과 Post의 대한 차이를 설명해보고자 한다. 이전 포스팅에서는 데이터를 저장하는 방식으로 Put만 설명하였는데 마찬가지로 데이터를 저장하는 Post 명령어를 사용한 후 어떤 상황에서 써야 하는지 이해해보자 PUT으로 저장하기 데이터를 매우 쉽게 넣을 수 있는 Put 명령은 다음과 같은 구조를 가진다 PUT /// put 예제 PUT /article/_doc/2 { "article_no":"20200707085400", "title":"삼성전자 2분기 영업이익 8조1천억원…'어닝서프라이..
노드(Nodes) 엘라스틱서치는 분산 시스템이며 노드는 이 분산 시스템에서 작동하는 하나의 엘라스틱서치 엔진(single server)을 의미한다. 이 노드들은 우리가 생각하는 일반적인 엘라스틱서치 엔진이며(내 컴퓨터에 엘라스틱서치를 한개 설치하였다면 하나의 노드를 설치한 것과 동일하다) 데이터의 저장과 색인(Index), 검색(Search) 모두 가능하다. 노드는 엘라스틱서치에서 고유의 아이디값으로 UUID(Universally Unique IDentifier)를 제공하며 원할 경우 노드의 고유의 아이디를 내가 직접 변경할 수 있다. 노드의 값을 변경하기 위해서는 엘라스틱치 설치된 위치에 config 폴더에 들어가면, 다양한 설정값들이 존재한다. 엘라스틱서치폴더/configelasticsearch.ke..
데이터입력 키바나(Kibana)의 콘솔을 활용하면 엘라스틱서치(Elasticsearch)에 매우 쉽게 데이터를 넣어볼 수 있다. 키바나(Kibana) Console 창에서 PUT Http 메소드를 사용하여 엘라스틱서치에 매우 쉽게 데이터를 넣어볼 수 있다. Kibana 콘솔창에 JSON 구조의 파라미터를 입력한 후, ▷ 버튼을 클릭하여 데이터를 입력한다. PUT /// PUT /article/_doc/1 { "article_no":"20200526000243", "title":"코오롱플라스틱, 긴축경영…코로나19 경영난 전방위 확산 우려", "description":"바스프 합작 신공장 고정비 과다 지출 PBT·POM 등 국내외 판매 둔화 가속 임원연봉 삭감…경영 정상화 안간힘 항공·정유 이어 소재산업 ..
키바나(Kibana) 키바나(Kibana)는 ELK(Elasticsearch, Logstash, Kibana)라는 엘라스틱서치 스택의 주요 솔루션 중 하나로 엘라스틱서치와 연계를 이루면서 비주얼라이징(Visualizing)을 통한 유저 인터페이스(User Interface, UI)를 제공하는 솔루션이다. 키바나를 설치하면 엘라스틱서치의 데이터를 쉽게 확인할 수 있고, 비주얼라이징을 통한 데이터 분석도 할 수 있으며, 관리기 역할까지 수행한다. (한마디로 필수적인 에드온이라 생각하면 된다) 설치하기 엘라스틱서치 다운로드 사이트에 키바나를 다운로드 할 수 있다. https://www.elastic.co/downloads/kibana 사이트로 이동하여, OS에 맡는 파일을 다운로드한다. (현재 이 포스팅을 쓰..