SlideShare a Scribd company logo
1 of 29
Download to read offline
전문 검색과 분석을 위한 Elasticsearch 서버
Ch 1. 일래스틱서치
클러스터 시작
아꿈사 스터디
정민철
들어가기 전
• Elasticsearch 최신 버젼 => 1.7.1
• 책에서 다루는 버젼 => 1.0.0
• 변경된 부분은 https://www.elastic.co/downloads/
past-releases 참고
• 1장에서 영향받은 부분: dynamic scripting disabled

https://www.elastic.co/guide/en/elasticsearch/
reference/current/modules-scripting.html#enable-
dynamic-scripting
전문 검색
• SQL DB: 확장성 결여, 유연성 낮음, 언어분석 결여
• Apach Lucene

- 전문 검색기능을 포함한 라이브러리 제공

- 빠름, 확장성 제공, 다양한 언어 분석 기능 제공
루씬 아키텍처
• 용어정리

- 다큐먼트: 주요 자료 전달 도구, 하나이상의 필드로 이루
어짐

- 필드: 이름, 값으로 구성된 다큐먼트의 구성요소

- 키워드: 단어를 표현하는 검색단위

- 토큰: 필드의 텍스트에 출현한 키워드의 상태정보
• 역색인: 색인에 포함된 키워드를 다큐먼트에 매핑하는 자
료구조
• 검색: 질의 키워드를 색인된 키워드와 일치시키는 작업
o, the index (in a very simplified way) can be visualized as follows:
1.0
4
Apache
Cookbook
Elasticsearch
Mastering
Server
Solr
2
<1>
<3>
<2>
<1>, <2>
1
1
1
1
1
1
<3>
<3>
<1>
<3>
Term
1
Count Document
ach term points to the number of documents it is present in. This allows a v
- Elasticsearch Server 1.0 (document 1)
- Mastering Elasticsearch (document 2)
- Apache Solr 4 Cookbook (document 3)
• 입력자료 분석

- 토큰 추출기: 텍스트를 토큰으로 분리

- 토큰 스트림: 토큰 추출기 작업 결과

- 토큰 필터: 토큰 스트림에 담긴 토큰 처리

- 문자 매퍼: 분석되지 않은 텍스트를 대상으로 동작
• 색인과 질의

- 질의 과정에서도 분석이 일어남

- 색인이 질의 키워드와 일치해야 함
• 점수와 질의 관련성

- 점수: 다큐먼트가 질의와 얼마나 잘 맞는지

- TF/IDF(Term Frequency/Inverse Document Frequency)

점수 매커니즘 사용
Elasticsearch란?
• Shay Banon이 시작한 오픈소스 검색 서버 프로젝트

=> 2010년 2월에 공개
• Apache Lucene 기반 검색 서버
• Elasticsearch is a distributed RESTful search engine
built for the cloud

- 분산 기능 제공

- 실시간 처리 기능 제공

- RESTful API 제공

- 전문 검색(full-text search) 엔진
자료구조의 핵심개념
• 색인: 논리적인 자료를 저장하는 논리공간

- 더 작은 조각으로 나뉘어질 수 있음

- 여러 서버에 색인 분산 가능
• 다큐먼트: 여러필드 포함, 필드마다 타입 지정

- 구조가 고정되어있지 않음

- 다큐먼트 타입과 관련된 유일한 식별자 요구
• 다큐먼트 타입: 단일 색인에서 객체를 쉽게 구분하게 해줌

- 동일한 프로퍼티에 대해 다른 타입을 설정할 수 없음
• 매핑: 다큐먼트의 필드에 대한 정보를 저장

- 타입마다 적절한 분석 제공
일래스틱서치 핵심 개념
• 노드와 클러스터: 서로 협력하는 여러 서버에서 동작가능

- 노드: 클러스터를 구성하는 각 서버

- 클러스터: 서로 협력하는 서버 집합
• 샤드: 자료를 더 작은 부분으로 나눠 여러 서버에 저장

- 단일 노드에 다큐먼트를 모두 저장할 자원이 없는 경우

- 질의를 유효한 샤드로 보내 결과를 병합함

- 색인 속도 증가
• 레플리카: 샤드의 동일한 복사본

- 질의 처리량을 늘리거나 고가용성 목적

- 주 샤드에 문제가 생기면 레플리카를 주 샤드로 승격
• 게이트웨이: 클러스터 상태 관리
색인과 검색
• 새로운 다큐먼트 추가

- 클러스터는 목표색인 명세 및 노드에 다큐먼트 전송

- 노드는 다큐먼트를 저장할 샤드 결정

- 다큐먼트의 유일한 식별자를 사용해 위치할 샤드 계산
• 검색요청 수행

- 색인을 담은 샤드가 위치한 모든 노드에 쿼리 전달

- 질의와 일치하는 다큐먼트에 대한 최소정보 요청(식별자, 점
수) => 분산과정

- 집계노드가 결과를 정렬 후 필요한 다큐먼트 정보 요청 => 취
합과정

- 위 과정에서 샤드와 레플리카 사이에 자동으로 부하 분산
[ 15 ]
Indexing request
Application
Shard 1
replica
Shard 2
replica
Shard 1
primary
Shard 2
primary
Elasticsearch Node
Elasticsearch Node
Elasticsearch Cluster
www.it-ebooks.info
Getting Started with the Elasticsearch Cluster
When you send a new document to the cluster, you specify a target index and s
it to any of the nodes. The node knows how many shards the target index has a
able to determine which shard should be used to store your document. Elasticse
can alter this behavior; we will talk about this in the Routing section of Chapter 2
Indexing Your Data. The important information that you have to remember for n
that Elasticsearch calculates the shard in which the document should be placed
the unique identifier of the document. After the indexing request is sent to a no
that node forwards the document to the target node, which hosts the relevant s
Now let's look at the following diagram on searching request execution:
Application
Elasticsearch Node
Elasticsearch Node
Elasticsearch Cluster
Shard 1
Shard 2
Scatter phase
Gather phase
Results
Query
클러스터 설치와 구성
• 일래스틱 서치 설치

- Java 설치: Java 6 이상, Java 7 권장

- 일래스틱 서치 다운로드: Link

- 설치할 장소에 압축 해제

- 리눅스에서는 바이너리 패키지로 설치 가능
• 일래스틱 설치 구성

- 시작이 쉬움: 합리적인 기본값과 자동 설정값 제공

- 설정파일: config/elasticsearch.yml

- 로깅설정파일: config/logging.yml

- 실행 중 설정값 변경 가능(cluster.name, node.name 제외)
• 일래스틱 설치 구성(2)

- 동일 클러스터 이름으로 구성된 노드는 하나의 클러스터로 통
합 시도함

- node.name을 지정하지 않을 경우 자동으로 이름 선택

- 자동 이름은 재시동 과정에서 변경될 수 있음
• logging.yml

- 얼마나 많은 정보를 로그에 저장할지 명세

- 로그파일 정의

- 주기적으로 새 파일을 생성하기 위한 규칙 정의
• elasticsearch.yml

- 운영체제 조율: file descriptor (32000개)

- JVM heap memory 제약(ES_HEAP_SIZE)
디렉터리 구조
디렉터리 설명
bin 인스턴스 구동 및 플러그인 관리 스크립트
config 구성 파일
lib 사용하는 라이브러리
data 모든 자료 저장
logs 이벤트와 오류에 대한 정보파일 저장
plugins 설치된 플러그인 저장
work 임시파일 저장
• 일래스틱 서치 실행

- 실행파일: bin/elasticsearch

- port 9200: HTTP REST API 포트

- port 9300: 클러스터 내부, 자바 클라이언트 통신 포트

- 다른 디렉터리에서 실행하면 자동으로 클러스터 형성
• REST API

- JSON 형식으로 결과 받음

- curl을 이용한 쿼리: curl -XGET localhost:9200/

- 노드 정보 얻기: localhost:9200/

- 클러스터 상태 점검: /_cluster/health?pretty
• 일래스틱서치 중단

- 콘솔에서: Ctrl + c

- kill signal

- REST API: POST /_cluster/nodes/_shutdown

- 단일노드 중단: POST /_cluster/nodes/[node id]/
_shutdown

- 노드 id 얻기: GET /_cluster/state/nodes
• 시스템 서비스로 설치

- 패키지로 설치한 경우: 이미 되어 있음

- 서비스 wrapper 이용: Link

- sudo bin/service/elasticsearch install
REST API로 자료 처리
• REST API

- REpresentational State Transfer

- 모든 요청은 주소의 일부가 지정하는 실체가 있는 객체로 전달

- /books/1/chapter/6
• REST API의 CRUD

- Create: PUT, 객체 생성

- Retrieve: GET, 현재 상태 얻기

- Update: POST, 객체 변경

- Delete: DELETE, 객체 제거
• NoSQL DB를 사용하는 방법과 유사
일래스틱서치에 자료 저장
• 새로운 다큐먼트 생성

- JSON으로 다큐먼트 표현

{ “id": "1",

"title": "New version of Elasticsearch released!",

"content": "Version 1.0 released today!",

"priority": 10,

"tags": ["announce", "elasticsearch", “release"] } 

- PUT /blog/article/1 -d ‘[JSON]’

- 응답 

{ “_index”:"blog", “_type":"article", 

“_id”:"1", “_version”:1,

“created”: true }

- 자동 식별자 생성: POST /blog/article/ -d ‘[JSON]’
• 다큐먼트 인출

- GET /blog/article/1

- 성공 시: 

{ "_index" : “blog", "_type" : "article",

"_id" : “1", "_version" : 1,

"exists" : true,

"_source" : {[document 내용]} 

}

- 실패 시: 

{ "_index" : “blog", "_type" : "article",

"_id" : “9999", "exists" : false }

• 다큐먼트 갱신

- 복잡한 작업

1. 다큐먼트를 가져와 _source 필드에서 자료 얻기

2. 예전 다큐먼트 삭제

3. 변경사항을 _source 필드에 적용

4. 새로운 다큐먼트 색인

- POST /blog/article/1/_update -d ‘{

“script”: “ctx._source.content = ”new content”” }’

=> 변경 대상만 보내면 됨

- 응답: { "_index" : “blog", "_type" : "article",

"_id" : “1", "_version" : 2 }

=> 기사 내용과 버젼 정보 변경

- 아직 없을 경우 기본값 지정 가능: {“upsert”: { “counter”:0} } 

- 동적 스크립팅 켜야 동작함(1.6.X 부터 보안 문제로 disable)
• 다큐먼트 삭제

- DELETE /blog/article/1

- 응답: { “found”: true, "_index" : “blog", 

"_type" : “article", "_id" : “1", "_version" : 2 }
• 버젼

- 다큐먼트가 추가/변경/삭제 될 때 버젼을 증가시킴

- 낙관적인 잠금(optimistic locking) 구현에 도움

- 특정 버젼 조건에서만 삭제

DELETE /library/book/1?version=1

주어진 버젼과 다를 경우 오류 반환

- 외부 시스템 제공 버젼 사용

PUT /library/book/1?version=1234 -d [JSON]

URI 요청 질의를 사용한 검색
• 샘플 데이터

- POST /books/es/1 

{"title":"ElasticsearchServer", "published": 2013}

- POST /books/es/2 

{"title":"Mastering Elasticsearch", "published": 2013}

- POST /books/solr/1 

{"title":"Apache Solr 4 Cookbook", "published": 2012}
• 매핑 결과 확인: GET /books/_mapping
• URI 요청

- 특정 색인/타입 검색: GET /books/_search, GET /books/es/_search

- 여러 색인 검색: GET /books,clients/_search

- 모든 색인 검색: GET /_search
• 질의 응답

- GET /books/_search?q=title:elasticsearch

{

"took" : 4, "timed_out" : false, 

"_shards" : { "total" : 5, "successful" : 5, "failed" : 0 },

"hits" : { "total" : 2, "max_score" : 0.625,

"hits" : [ 

{ "_index" : "books", "_type" : "es","_id" : "1", "_score" :
0.625, "_source" : {"title":"Elasticsearch Server", "published":
2013}}, 

{"_index" : "books", "_type" : "es","_id" : "2", "_score" :
0.19178301, "_source" : {“title":"Mastering Elasticsearch",
"published": 2013}}] } 

}
• 질의 분석

- URI요청 질의는 query string으로 매핑되어 분석

- 색인분석 API: 분석 과정 진행을 보여줌

GET /books/_analyze?field=title -d ‘Elasticsearch server’

- 응답 

{ "tokens" : [ 

{"token" : "elasticsearch", "start_offset" : 0,

"end_offset" : 13, "type" : "<ALPHANUM>",

"position" : 1 },

{"token" : "server", "start_offset" : 14, 

"end_offset" : 20, "type" : "<ALPHANUM>", 

"position" : 2}] 

}
• URI 질의 문자열 매개변수

- 각 매개변수는 & 문자로 결합
• 예제쿼리 

GET /books/_search?q=published:
2013&df=title&explain=true&default_operation=AND
• q

- 일치하는 다큐먼트를 찾기위한 질의

- Lucene 질의구문 사용
• df

- 기본 검색 필드 명세

- 기본 값으로 all 필드를 사용
• Analyzer: 질의 분석에 사용될 분석기 이름 정의
• default_operator

- 질의에 사용될 기본 부울 연산자 명세

- 기본값은 OR
• explain: true일 경우 결과의 다큐먼트마다 질의 해설 정보 추가
• field: 반환될 필드 명세, 기본값은 _source
• sort

- 독자적인 정렬방식 명세

- sort=published:desc : published 필드를 기준으로 오름차순
• timeout

- 검색 타임아웃 설정

- 해당 시점까지 수집한 결과 반환
• 결과 윈도우: size, from

- size: 반환될 최대 크기

- from: 결과가 반환해야하는 다큐먼트 시작 위치
• search_type: 검색 타입 => 3장에서...
• lowecase_expanded_term: 확장 키워드 소문자 변환
• analyze_wildcard: 와일드 카드 질의와 접두어 분석

More Related Content

What's hot

엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나종민 김
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문SeungHyun Eom
 
Meteor Elasticsearch 연동 Trial
Meteor Elasticsearch 연동 TrialMeteor Elasticsearch 연동 Trial
Meteor Elasticsearch 연동 TrialSangwon Lee
 
엘라스틱 서치 세미나
엘라스틱 서치 세미나엘라스틱 서치 세미나
엘라스틱 서치 세미나종현 김
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.jsHeeJung Hwang
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & RankingIan Choi
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaHyeonSeok Choi
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629Dosang Yoon
 
검색 서비스 간략 교육
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육 Rjs Ryu
 
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기JangHyuk You
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Jin wook
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교Woo Yeong Choi
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'sung ki choi
 
Mongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDMongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDJin wook
 
Elasticsearch development case
Elasticsearch development caseElasticsearch development case
Elasticsearch development case일규 최
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8HyeonSeok Choi
 
Solr development case
Solr development caseSolr development case
Solr development case일규 최
 

What's hot (20)

엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
 
Meteor Elasticsearch 연동 Trial
Meteor Elasticsearch 연동 TrialMeteor Elasticsearch 연동 Trial
Meteor Elasticsearch 연동 Trial
 
엘라스틱 서치 세미나
엘라스틱 서치 세미나엘라스틱 서치 세미나
엘라스틱 서치 세미나
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, Kibana
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629
 
검색 서비스 간략 교육
검색 서비스 간략 교육 검색 서비스 간략 교육
검색 서비스 간략 교육
 
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
Feature perf comp_v1
Feature perf comp_v1Feature perf comp_v1
Feature perf comp_v1
 
Mongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDMongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUD
 
Elasticsearch development case
Elasticsearch development caseElasticsearch development case
Elasticsearch development case
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
Learning spark ch1-2
Learning spark ch1-2Learning spark ch1-2
Learning spark ch1-2
 
Solr development case
Solr development caseSolr development case
Solr development case
 

Viewers also liked

Elasticsearch 설치 및 기본 활용
Elasticsearch 설치 및 기본 활용Elasticsearch 설치 및 기본 활용
Elasticsearch 설치 및 기본 활용종민 김
 
ELB와 EBS의 아키텍터로 생각해보는 사용상 주의할 점들
ELB와 EBS의 아키텍터로 생각해보는 사용상 주의할 점들ELB와 EBS의 아키텍터로 생각해보는 사용상 주의할 점들
ELB와 EBS의 아키텍터로 생각해보는 사용상 주의할 점들AWSKRUG - AWS한국사용자모임
 
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈jihoon kim
 
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015Amazon Web Services Korea
 
검색엔진 오픈 소스 Lucene
검색엔진 오픈 소스 Lucene검색엔진 오픈 소스 Lucene
검색엔진 오픈 소스 LuceneEunGi Hong
 
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자Donghyeok Kang
 
GA로 게임 로그 분석하기
GA로 게임 로그 분석하기GA로 게임 로그 분석하기
GA로 게임 로그 분석하기Alan Kang
 
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬) Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬) Amazon Web Services Korea
 
형태소 분석기를 적용한 elasticsearch 운영
형태소 분석기를 적용한 elasticsearch 운영형태소 분석기를 적용한 elasticsearch 운영
형태소 분석기를 적용한 elasticsearch 운영창훈 정
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈Minwoo Kim
 
Network Traffic Analysis at a financial institution with 788 branches for 350...
Network Traffic Analysis at a financial institution with 788 branches for 350...Network Traffic Analysis at a financial institution with 788 branches for 350...
Network Traffic Analysis at a financial institution with 788 branches for 350...ManageEngine, Zoho Corporation
 
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략Ji-Woong Choi
 
Elastic beanstalk - 판교 초급자 모임 - 안병학
Elastic beanstalk - 판교 초급자 모임 - 안병학Elastic beanstalk - 판교 초급자 모임 - 안병학
Elastic beanstalk - 판교 초급자 모임 - 안병학Byeong-hak An
 

Viewers also liked (18)

Elasticsearch 설치 및 기본 활용
Elasticsearch 설치 및 기본 활용Elasticsearch 설치 및 기본 활용
Elasticsearch 설치 및 기본 활용
 
ELB와 EBS의 아키텍터로 생각해보는 사용상 주의할 점들
ELB와 EBS의 아키텍터로 생각해보는 사용상 주의할 점들ELB와 EBS의 아키텍터로 생각해보는 사용상 주의할 점들
ELB와 EBS의 아키텍터로 생각해보는 사용상 주의할 점들
 
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈
제2회 한글형태소분석기 기술 세니마 발표(solr 활용 입문) by 김지훈
 
Why Configuration Management Matters
Why Configuration Management MattersWhy Configuration Management Matters
Why Configuration Management Matters
 
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015
AWS로 사용자 천만명 서비스 만들기 - 윤석찬 (AWS 테크에반젤리스트) :: AWS 웨비나 시리즈 2015
 
검색엔진 오픈 소스 Lucene
검색엔진 오픈 소스 Lucene검색엔진 오픈 소스 Lucene
검색엔진 오픈 소스 Lucene
 
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
[제1회 루씬 한글분석기 기술세미나] solr로 나만의 검색엔진을 만들어보자
 
GA로 게임 로그 분석하기
GA로 게임 로그 분석하기GA로 게임 로그 분석하기
GA로 게임 로그 분석하기
 
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬) Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
Amazon Elastcsearch Service 소개 및 활용 방법 (윤석찬)
 
Mahout
MahoutMahout
Mahout
 
Elastic search 검색
Elastic search 검색Elastic search 검색
Elastic search 검색
 
형태소 분석기를 적용한 elasticsearch 운영
형태소 분석기를 적용한 elasticsearch 운영형태소 분석기를 적용한 elasticsearch 운영
형태소 분석기를 적용한 elasticsearch 운영
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
 
Network Traffic Analysis at a financial institution with 788 branches for 350...
Network Traffic Analysis at a financial institution with 788 branches for 350...Network Traffic Analysis at a financial institution with 788 branches for 350...
Network Traffic Analysis at a financial institution with 788 branches for 350...
 
What's new in NetFlow Analyzer 12.2
What's new in NetFlow Analyzer 12.2What's new in NetFlow Analyzer 12.2
What's new in NetFlow Analyzer 12.2
 
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
 
Elastic beanstalk - 판교 초급자 모임 - 안병학
Elastic beanstalk - 판교 초급자 모임 - 안병학Elastic beanstalk - 판교 초급자 모임 - 안병학
Elastic beanstalk - 판교 초급자 모임 - 안병학
 

Similar to Ch1 일래스틱서치 클러스터 시작

Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Gruter
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipelineJongho Woo
 
ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기Yungon Park
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon Web Services Korea
 
google dinos
google dinosgoogle dinos
google dinosjuhyun
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제NAVER D2
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Gruter
 
AWS없이 만든 AWS와 유사한 데이터 파이프라인
AWS없이 만든  AWS와 유사한 데이터 파이프라인AWS없이 만든  AWS와 유사한 데이터 파이프라인
AWS없이 만든 AWS와 유사한 데이터 파이프라인Kim Hyuk
 
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...Amazon Web Services Korea
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
 
Apache kafka 확장과 응용
Apache kafka 확장과 응용Apache kafka 확장과 응용
Apache kafka 확장과 응용JANGWONSEO4
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3Amazon Web Services Korea
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017Amazon Web Services Korea
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?nexusz99
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache TajoGruter
 
Restful web service
Restful web serviceRestful web service
Restful web servicesunguen lee
 
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1Jungsu Heo
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 

Similar to Ch1 일래스틱서치 클러스터 시작 (20)

Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기ECS+Locust로 부하 테스트 진행하기
ECS+Locust로 부하 테스트 진행하기
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
 
google dinos
google dinosgoogle dinos
google dinos
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013
 
AWS없이 만든 AWS와 유사한 데이터 파이프라인
AWS없이 만든  AWS와 유사한 데이터 파이프라인AWS없이 만든  AWS와 유사한 데이터 파이프라인
AWS없이 만든 AWS와 유사한 데이터 파이프라인
 
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
AWS CLOUD 2018- 관리형 Kubernetes 지원과 새로운 컨테이너 서비스 Amazon Fargate 소개 (정영준 솔루션즈 아...
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
Apache kafka 확장과 응용
Apache kafka 확장과 응용Apache kafka 확장과 응용
Apache kafka 확장과 응용
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
 
Restful web service
Restful web serviceRestful web service
Restful web service
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
 

More from Minchul Jung

13.앙상블학습
13.앙상블학습13.앙상블학습
13.앙상블학습Minchul Jung
 
10장 진화학습
10장 진화학습10장 진화학습
10장 진화학습Minchul Jung
 
DDD Start! - 2장 아키텍처 개요
DDD Start! - 2장 아키텍처 개요DDD Start! - 2장 아키텍처 개요
DDD Start! - 2장 아키텍처 개요Minchul Jung
 
Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조Minchul Jung
 
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)Minchul Jung
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기Minchul Jung
 
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형Minchul Jung
 
[Http완벽가이드] 9장 웹로봇
[Http완벽가이드] 9장 웹로봇[Http완벽가이드] 9장 웹로봇
[Http완벽가이드] 9장 웹로봇Minchul Jung
 
Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법Minchul Jung
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Minchul Jung
 
Apprenticeship patterns 7
Apprenticeship patterns 7Apprenticeship patterns 7
Apprenticeship patterns 7Minchul Jung
 
Tools in android sdk
Tools in android sdkTools in android sdk
Tools in android sdkMinchul Jung
 

More from Minchul Jung (12)

13.앙상블학습
13.앙상블학습13.앙상블학습
13.앙상블학습
 
10장 진화학습
10장 진화학습10장 진화학습
10장 진화학습
 
DDD Start! - 2장 아키텍처 개요
DDD Start! - 2장 아키텍처 개요DDD Start! - 2장 아키텍처 개요
DDD Start! - 2장 아키텍처 개요
 
Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조
 
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
 
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
 
[Http완벽가이드] 9장 웹로봇
[Http완벽가이드] 9장 웹로봇[Http완벽가이드] 9장 웹로봇
[Http완벽가이드] 9장 웹로봇
 
Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법Ch10.애플리케이션 서버의 병목_발견_방법
Ch10.애플리케이션 서버의 병목_발견_방법
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1
 
Apprenticeship patterns 7
Apprenticeship patterns 7Apprenticeship patterns 7
Apprenticeship patterns 7
 
Tools in android sdk
Tools in android sdkTools in android sdk
Tools in android sdk
 

Ch1 일래스틱서치 클러스터 시작

  • 1. 전문 검색과 분석을 위한 Elasticsearch 서버 Ch 1. 일래스틱서치 클러스터 시작 아꿈사 스터디 정민철
  • 3. • Elasticsearch 최신 버젼 => 1.7.1 • 책에서 다루는 버젼 => 1.0.0 • 변경된 부분은 https://www.elastic.co/downloads/ past-releases 참고 • 1장에서 영향받은 부분: dynamic scripting disabled
 https://www.elastic.co/guide/en/elasticsearch/ reference/current/modules-scripting.html#enable- dynamic-scripting
  • 4. 전문 검색 • SQL DB: 확장성 결여, 유연성 낮음, 언어분석 결여 • Apach Lucene
 - 전문 검색기능을 포함한 라이브러리 제공
 - 빠름, 확장성 제공, 다양한 언어 분석 기능 제공
  • 5. 루씬 아키텍처 • 용어정리
 - 다큐먼트: 주요 자료 전달 도구, 하나이상의 필드로 이루 어짐
 - 필드: 이름, 값으로 구성된 다큐먼트의 구성요소
 - 키워드: 단어를 표현하는 검색단위
 - 토큰: 필드의 텍스트에 출현한 키워드의 상태정보 • 역색인: 색인에 포함된 키워드를 다큐먼트에 매핑하는 자 료구조 • 검색: 질의 키워드를 색인된 키워드와 일치시키는 작업
  • 6. o, the index (in a very simplified way) can be visualized as follows: 1.0 4 Apache Cookbook Elasticsearch Mastering Server Solr 2 <1> <3> <2> <1>, <2> 1 1 1 1 1 1 <3> <3> <1> <3> Term 1 Count Document ach term points to the number of documents it is present in. This allows a v - Elasticsearch Server 1.0 (document 1) - Mastering Elasticsearch (document 2) - Apache Solr 4 Cookbook (document 3)
  • 7. • 입력자료 분석
 - 토큰 추출기: 텍스트를 토큰으로 분리
 - 토큰 스트림: 토큰 추출기 작업 결과
 - 토큰 필터: 토큰 스트림에 담긴 토큰 처리
 - 문자 매퍼: 분석되지 않은 텍스트를 대상으로 동작 • 색인과 질의
 - 질의 과정에서도 분석이 일어남
 - 색인이 질의 키워드와 일치해야 함 • 점수와 질의 관련성
 - 점수: 다큐먼트가 질의와 얼마나 잘 맞는지
 - TF/IDF(Term Frequency/Inverse Document Frequency)
 점수 매커니즘 사용
  • 9. • Shay Banon이 시작한 오픈소스 검색 서버 프로젝트
 => 2010년 2월에 공개 • Apache Lucene 기반 검색 서버 • Elasticsearch is a distributed RESTful search engine built for the cloud
 - 분산 기능 제공
 - 실시간 처리 기능 제공
 - RESTful API 제공
 - 전문 검색(full-text search) 엔진
  • 10. 자료구조의 핵심개념 • 색인: 논리적인 자료를 저장하는 논리공간
 - 더 작은 조각으로 나뉘어질 수 있음
 - 여러 서버에 색인 분산 가능 • 다큐먼트: 여러필드 포함, 필드마다 타입 지정
 - 구조가 고정되어있지 않음
 - 다큐먼트 타입과 관련된 유일한 식별자 요구 • 다큐먼트 타입: 단일 색인에서 객체를 쉽게 구분하게 해줌
 - 동일한 프로퍼티에 대해 다른 타입을 설정할 수 없음 • 매핑: 다큐먼트의 필드에 대한 정보를 저장
 - 타입마다 적절한 분석 제공
  • 11. 일래스틱서치 핵심 개념 • 노드와 클러스터: 서로 협력하는 여러 서버에서 동작가능
 - 노드: 클러스터를 구성하는 각 서버
 - 클러스터: 서로 협력하는 서버 집합 • 샤드: 자료를 더 작은 부분으로 나눠 여러 서버에 저장
 - 단일 노드에 다큐먼트를 모두 저장할 자원이 없는 경우
 - 질의를 유효한 샤드로 보내 결과를 병합함
 - 색인 속도 증가 • 레플리카: 샤드의 동일한 복사본
 - 질의 처리량을 늘리거나 고가용성 목적
 - 주 샤드에 문제가 생기면 레플리카를 주 샤드로 승격 • 게이트웨이: 클러스터 상태 관리
  • 12. 색인과 검색 • 새로운 다큐먼트 추가
 - 클러스터는 목표색인 명세 및 노드에 다큐먼트 전송
 - 노드는 다큐먼트를 저장할 샤드 결정
 - 다큐먼트의 유일한 식별자를 사용해 위치할 샤드 계산 • 검색요청 수행
 - 색인을 담은 샤드가 위치한 모든 노드에 쿼리 전달
 - 질의와 일치하는 다큐먼트에 대한 최소정보 요청(식별자, 점 수) => 분산과정
 - 집계노드가 결과를 정렬 후 필요한 다큐먼트 정보 요청 => 취 합과정
 - 위 과정에서 샤드와 레플리카 사이에 자동으로 부하 분산
  • 13. [ 15 ] Indexing request Application Shard 1 replica Shard 2 replica Shard 1 primary Shard 2 primary Elasticsearch Node Elasticsearch Node Elasticsearch Cluster www.it-ebooks.info Getting Started with the Elasticsearch Cluster When you send a new document to the cluster, you specify a target index and s it to any of the nodes. The node knows how many shards the target index has a able to determine which shard should be used to store your document. Elasticse can alter this behavior; we will talk about this in the Routing section of Chapter 2 Indexing Your Data. The important information that you have to remember for n that Elasticsearch calculates the shard in which the document should be placed the unique identifier of the document. After the indexing request is sent to a no that node forwards the document to the target node, which hosts the relevant s Now let's look at the following diagram on searching request execution: Application Elasticsearch Node Elasticsearch Node Elasticsearch Cluster Shard 1 Shard 2 Scatter phase Gather phase Results Query
  • 14. 클러스터 설치와 구성 • 일래스틱 서치 설치
 - Java 설치: Java 6 이상, Java 7 권장
 - 일래스틱 서치 다운로드: Link
 - 설치할 장소에 압축 해제
 - 리눅스에서는 바이너리 패키지로 설치 가능 • 일래스틱 설치 구성
 - 시작이 쉬움: 합리적인 기본값과 자동 설정값 제공
 - 설정파일: config/elasticsearch.yml
 - 로깅설정파일: config/logging.yml
 - 실행 중 설정값 변경 가능(cluster.name, node.name 제외)
  • 15. • 일래스틱 설치 구성(2)
 - 동일 클러스터 이름으로 구성된 노드는 하나의 클러스터로 통 합 시도함
 - node.name을 지정하지 않을 경우 자동으로 이름 선택
 - 자동 이름은 재시동 과정에서 변경될 수 있음 • logging.yml
 - 얼마나 많은 정보를 로그에 저장할지 명세
 - 로그파일 정의
 - 주기적으로 새 파일을 생성하기 위한 규칙 정의 • elasticsearch.yml
 - 운영체제 조율: file descriptor (32000개)
 - JVM heap memory 제약(ES_HEAP_SIZE)
  • 16. 디렉터리 구조 디렉터리 설명 bin 인스턴스 구동 및 플러그인 관리 스크립트 config 구성 파일 lib 사용하는 라이브러리 data 모든 자료 저장 logs 이벤트와 오류에 대한 정보파일 저장 plugins 설치된 플러그인 저장 work 임시파일 저장
  • 17. • 일래스틱 서치 실행
 - 실행파일: bin/elasticsearch
 - port 9200: HTTP REST API 포트
 - port 9300: 클러스터 내부, 자바 클라이언트 통신 포트
 - 다른 디렉터리에서 실행하면 자동으로 클러스터 형성 • REST API
 - JSON 형식으로 결과 받음
 - curl을 이용한 쿼리: curl -XGET localhost:9200/
 - 노드 정보 얻기: localhost:9200/
 - 클러스터 상태 점검: /_cluster/health?pretty
  • 18. • 일래스틱서치 중단
 - 콘솔에서: Ctrl + c
 - kill signal
 - REST API: POST /_cluster/nodes/_shutdown
 - 단일노드 중단: POST /_cluster/nodes/[node id]/ _shutdown
 - 노드 id 얻기: GET /_cluster/state/nodes • 시스템 서비스로 설치
 - 패키지로 설치한 경우: 이미 되어 있음
 - 서비스 wrapper 이용: Link
 - sudo bin/service/elasticsearch install
  • 19. REST API로 자료 처리 • REST API
 - REpresentational State Transfer
 - 모든 요청은 주소의 일부가 지정하는 실체가 있는 객체로 전달
 - /books/1/chapter/6 • REST API의 CRUD
 - Create: PUT, 객체 생성
 - Retrieve: GET, 현재 상태 얻기
 - Update: POST, 객체 변경
 - Delete: DELETE, 객체 제거 • NoSQL DB를 사용하는 방법과 유사
  • 20. 일래스틱서치에 자료 저장 • 새로운 다큐먼트 생성
 - JSON으로 다큐먼트 표현
 { “id": "1",
 "title": "New version of Elasticsearch released!",
 "content": "Version 1.0 released today!",
 "priority": 10,
 "tags": ["announce", "elasticsearch", “release"] } 
 - PUT /blog/article/1 -d ‘[JSON]’
 - 응답 
 { “_index”:"blog", “_type":"article", 
 “_id”:"1", “_version”:1,
 “created”: true }
 - 자동 식별자 생성: POST /blog/article/ -d ‘[JSON]’
  • 21. • 다큐먼트 인출
 - GET /blog/article/1
 - 성공 시: 
 { "_index" : “blog", "_type" : "article",
 "_id" : “1", "_version" : 1,
 "exists" : true,
 "_source" : {[document 내용]} 
 }
 - 실패 시: 
 { "_index" : “blog", "_type" : "article",
 "_id" : “9999", "exists" : false }

  • 22. • 다큐먼트 갱신
 - 복잡한 작업
 1. 다큐먼트를 가져와 _source 필드에서 자료 얻기
 2. 예전 다큐먼트 삭제
 3. 변경사항을 _source 필드에 적용
 4. 새로운 다큐먼트 색인
 - POST /blog/article/1/_update -d ‘{
 “script”: “ctx._source.content = ”new content”” }’
 => 변경 대상만 보내면 됨
 - 응답: { "_index" : “blog", "_type" : "article",
 "_id" : “1", "_version" : 2 }
 => 기사 내용과 버젼 정보 변경
 - 아직 없을 경우 기본값 지정 가능: {“upsert”: { “counter”:0} } 
 - 동적 스크립팅 켜야 동작함(1.6.X 부터 보안 문제로 disable)
  • 23. • 다큐먼트 삭제
 - DELETE /blog/article/1
 - 응답: { “found”: true, "_index" : “blog", 
 "_type" : “article", "_id" : “1", "_version" : 2 } • 버젼
 - 다큐먼트가 추가/변경/삭제 될 때 버젼을 증가시킴
 - 낙관적인 잠금(optimistic locking) 구현에 도움
 - 특정 버젼 조건에서만 삭제
 DELETE /library/book/1?version=1
 주어진 버젼과 다를 경우 오류 반환
 - 외부 시스템 제공 버젼 사용
 PUT /library/book/1?version=1234 -d [JSON]

  • 24. URI 요청 질의를 사용한 검색 • 샘플 데이터
 - POST /books/es/1 
 {"title":"ElasticsearchServer", "published": 2013}
 - POST /books/es/2 
 {"title":"Mastering Elasticsearch", "published": 2013}
 - POST /books/solr/1 
 {"title":"Apache Solr 4 Cookbook", "published": 2012} • 매핑 결과 확인: GET /books/_mapping • URI 요청
 - 특정 색인/타입 검색: GET /books/_search, GET /books/es/_search
 - 여러 색인 검색: GET /books,clients/_search
 - 모든 색인 검색: GET /_search
  • 25. • 질의 응답
 - GET /books/_search?q=title:elasticsearch
 {
 "took" : 4, "timed_out" : false, 
 "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 },
 "hits" : { "total" : 2, "max_score" : 0.625,
 "hits" : [ 
 { "_index" : "books", "_type" : "es","_id" : "1", "_score" : 0.625, "_source" : {"title":"Elasticsearch Server", "published": 2013}}, 
 {"_index" : "books", "_type" : "es","_id" : "2", "_score" : 0.19178301, "_source" : {“title":"Mastering Elasticsearch", "published": 2013}}] } 
 }
  • 26. • 질의 분석
 - URI요청 질의는 query string으로 매핑되어 분석
 - 색인분석 API: 분석 과정 진행을 보여줌
 GET /books/_analyze?field=title -d ‘Elasticsearch server’
 - 응답 
 { "tokens" : [ 
 {"token" : "elasticsearch", "start_offset" : 0,
 "end_offset" : 13, "type" : "<ALPHANUM>",
 "position" : 1 },
 {"token" : "server", "start_offset" : 14, 
 "end_offset" : 20, "type" : "<ALPHANUM>", 
 "position" : 2}] 
 }
  • 27. • URI 질의 문자열 매개변수
 - 각 매개변수는 & 문자로 결합 • 예제쿼리 
 GET /books/_search?q=published: 2013&df=title&explain=true&default_operation=AND • q
 - 일치하는 다큐먼트를 찾기위한 질의
 - Lucene 질의구문 사용 • df
 - 기본 검색 필드 명세
 - 기본 값으로 all 필드를 사용
  • 28. • Analyzer: 질의 분석에 사용될 분석기 이름 정의 • default_operator
 - 질의에 사용될 기본 부울 연산자 명세
 - 기본값은 OR • explain: true일 경우 결과의 다큐먼트마다 질의 해설 정보 추가 • field: 반환될 필드 명세, 기본값은 _source • sort
 - 독자적인 정렬방식 명세
 - sort=published:desc : published 필드를 기준으로 오름차순
  • 29. • timeout
 - 검색 타임아웃 설정
 - 해당 시점까지 수집한 결과 반환 • 결과 윈도우: size, from
 - size: 반환될 최대 크기
 - from: 결과가 반환해야하는 다큐먼트 시작 위치 • search_type: 검색 타입 => 3장에서... • lowecase_expanded_term: 확장 키워드 소문자 변환 • analyze_wildcard: 와일드 카드 질의와 접두어 분석