비츠(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 - 클러스터들은 같은 클러스터의 이름을 가진 경우 묶을 수 있는데 여기서 지정을 할 ..
엘라스틱서치의 장점 중 하나는 바로 스키마리스(Schemaless)가 가능하다는 점이다. 이로 인해서 DB를 설계가 편리해지고 개발하는 과정에서 힘든 부분을 상쇄할 수 있다. 하지만 스키마리스는 양날의 검이 될 수 있는데 원치 않는 스키마로 인해서 색인이 이상하게 될 경우, 검색에 문제가 있거나 퍼포먼스 측면에서 떨어질 수 있다. 개발을 진행중에는 스키마를 등록하지 않고 진행할 수 있겠지만, 데이터 설계가 끝날 즈음에는 스키마를 등록하여 데이터 구조를 고정시키고 원하는 형태의 검색이 가능하게 만들어야 될 것이다. Schemaless 케이스 우선 스키마리스의 문제부터 파악해보도록 한다. 다음과 같이 주식에 관련된 데이터를 검색엔진에 넣었다고 가정을 해본다. PUT /stock/_doc/1 { "stockI..
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에 맡는 파일을 다운로드한다. (현재 이 포스팅을 쓰..
엘라스틱 서치를 써야 하는 8가지 이유 Schemaless와 문서지향 엘라스틱 서치는 JSON 구조를 사용하여 기존의 RDMS와 같은 엄격한 구조를 적용하지 않는다. 비정형 데이터는 비구조적이며, 스키마(Schema)가 다이나믹하게 변할 수 있다. 전통적인 관계형 구조로 구성할 경우 프로젝트 막바지에 모든 스키마를 변경하고, 데이터를 다시 구성하는 문제에 봉착할 수 있는데 JSON 구조는 이런 문제들을 사전에 막을 수 있다. 또다른 장점으로 데이터 공간을 절약할 수 있다. 컬럼을 동적으로 정의하여, 필요한 데이터만 넣게 되어 데이터 공간 및 CPU 사용량, 네트워크 트래픽도 줄일 수 있는 효과를 볼 수 있다. 아래의 예시를 한번 보도록 하자 데이터 예시 1{ "title":"엘라스틱에 대하여", "aut..
1. 국내의 검색엔진 검색엔진 전문가로서, 많은 분들이 검색엔진하면 어렵다는 편견을 갖는 분들이 많다. DB는 스페셜하게 잘 다루지만, 검색엔진은 왠지 전문가만 다뤄야 할 것만 같아서 검색엔진을 사용하면 훨씬 효율성이 높은 부분 마저도 DB에서 Like 쿼리를 사용하는 사이트가 허다하다. 그렇다고, 국내의 검색엔진 업체 제품을 쓰면 왠지 손해보는 느낌이 강한데... 왠만한 검색엔진 값이 차 한대값과 맞먹고, 라이센스에 따라서 아반테가격에서 벤츠가격까지 올라가는 경우가 존재한다. 국내의 검색엔진 업체는 와이즈넛, 코난테크놀로지, 솔트룩스의 3파전 양상이다. 이중 와이즈넛이 가장 유명하지만, 그렇다고 기술력이 가장 뛰어난 업체는 아니다. 와이즈넛과 코난테크놀로지는 검색엔진 순수 기술로만 하면 BMT 스코어가..