SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
2018. 4 (기준)
최일규 (ilkyu.choi@gmail.com)
Elasticsearch 검색개발
Lucene
Elasticsearch
Lucene은 확장 가능한 고성능
정보검색(IR, Information
Retrieval) 라이브러리이다.
Elasticsearch는 확장성이 뛰어난 Apache Lucene 프로젝
트에 기반을 둔 오픈소스 풀텍스트 검색 및 분석엔진입니다.
Elasticsearch 란?
- JSON document
- RESTful APIs
- Distributed
- Multi-tenancy
- Near Real Time
속도1
2
3
랭킹
자연어 검색
검색엔진 필요성
데이터 원본 정제 색인 평가
RDBMS
OPEN-API
제휴DB
크롤링
자체생산
활용
데이터 (비)정규화
맵핑구조
데이터 클렌징
Logstash
Bulk API
기타
Precision/Recall
Explain
Index Time
Query Time
웹서비스
모바일 서비스
기타
1 2 3 4 5
검색서비스 개발과정
1. Term : 분석과정을 거치고 저장된 토큰의 최소단위를 텀(Term)이라고 한다.
2. Inverted Index : * 대용량 텍스트 검색을 위해 고안된 자료구조
Term Doc 1 Doc 2 Doc 3 출현빈도
quick O O O 3
brown O 1
예) “Quick brown”
주요용어 및 개념
1. 쿼리(Query)와 필터(Filter)
구분 쿼리(Query) 필터(Filter)
검색대상 전문검색(Full Text) 바이너리 구분(Y/N)
점수계산 O X
캐싱 X O
응답속도(성능) 느림 빠름
2. 쿼리와 필터 비교
• 엘라스틱서치에서 데이터를 찾고 구분하는 기능은 쿼리와 필터로 나뉨
• 쿼리와 필터는 모두 JSON형의 QueryDSL로 표현한다.
• 필터는 문서의 수를 줄이는데 목표로 한다.
주요용어 및 개념
1. 정확율(precision), 재현율(recall)
: 정보검색을 평가하는데 이용되는 지표
> 정확율 : 검색된 정보가 얼마나 적합하고 관련있는 문서의 비율
> 재현율 : 관련있는 문서들 중 실제로 검색된 문서의 비율
예) 대학생선교회, 대학생선교회
주요용어 및 개념
1. 이음 동의어 (Synonyms)
2. 연관어
단어 동의어(유의어)
초등학생 초딩, 초등생
파리바게트 빠리바게트, 파리바게뜨
콘크리트 공구리
휴대폰 휴대전화, 핸드폰
단어 연관어
문재인 100대 국정과제
빅뱅 지드래곤, 태양
이선희 히든싱어 시즌3
주요용어 및 개념
1. RDBMS VS Elasticsearch
RDBMS Elasticsearch
Database Index
Table Type (ES 7.0 deprecated)
Row Document
Column Field
Schema Mapping
SQL Query DSL
RDBMS와 데이터 구조 비교
1. TF (Term Frequency)
- 한 문서에서 같은 검색어(term)가 많이 나타날수록 높은점수 부여
2. IDF (Inverse Document Frequency)
- 해당term이 전체 Document set에 얼마나 나왔는지 측정
- 흔한 단어일수록 idf가 낮아지고 찾아보기 힘든 단어일수록 idf 높아짐
3. COORD (Coordination factor)
- 검색질의가 여러 개의 term으로 이루어졌을경우 문서에서 매치되는 term 개수가
많을수록 높은점수 부여
4. lengthNorm
- term이 크기가 작은 필드에서 출현할 수록 높은점수 부여
5. Query Time Boosting
Scoring 계산
Cluster
Master Node Data Node Data Node
0
3
4 2
1
3 1
4
2
0
Shard (데이터 검색단위 인스턴스)
Replica (샤드의 복사본)
Primary shard
Replica shard
인덱스 생성 또는 삭제
노드추적, 클러스터에 할당할 샤드결정
및 클러스터 상태관리
실제 데이터가 저장되는 노드
CRUD, 검색 및 집계와 같은 데이터
관련 작업수행
Elasticsearch 아키텍처
Cluster
Node1 Node2
0
3
2 2
1
3
0
9200 9201
9300
9301
1
9200번 부터 REST-API를 위한 HTTP통신포트 할당
9300번 부터 노드간 바인딩을 위한 포트로 할당
같은 클러스터 이름을 가지고
실행된 노드는 자동으로 바인딩
노드바인딩
Analyzer
1개
Tokenizer
N개
TokenFilter= +
CharFilter
HTMLStripper
Tokenizer
Standard
Input
TokenFilter
Stopwords
TokenFilter
Lowercase
Index Terms
“<p>The quick brown Fox Jumps over the Lazy dog</p>”
“The quick brown Fox Jumps over the Lazy dog”
[“The”, “quick”, “brown”, “Fox”, “Jumps”, “over”, “the”, “Lazy”, “dog”]
[“quick”, “brown”, “Fox”,
“Jumps”, “over”, “Lazy”, “dog”]
[“quick”, “brown”, “fox”,
“jumps”, “over”, “lazy”, “dog”]
Analyzer란?
Standard Analyzer
Built-in Analyzer
Custom Analyzer
Simple Analyzer Keyword Analyzer
Whitespace
Analyzer
Pattern Analyzer
한글형태소
자동완성
(suggest)
Elasticsearch Analyzer 유형
Settings
(Dynamic | Explicit)
Mappings
PUT /{_index}
{
“settings”: {
“index”: {
“number_of_shards”: 5,
“number_of_replicas”: 2,
“analysis”: {
“analyzer”: {},
“tokenizer”: {},
“char_filter”: {},
“filer”: {}
}
}
}
}
PUT /{_index}
{
“mappings”: {
“type1”: {
“properties”: {
“field1”: {
“type”: “text”
}
}
}
}
}
Create Document
POST /{_index}/{_type}
{
“field1”: “Hello Elasticsearch”
}
+
Index생성 및 Document생성
1. Term Query
POST _search
{
"query": {
"term" : {
"user" : “피부"
}
}
}
2. Match Query
POST _search
{
"query": {
“match" : {
"user" : “피부 특성"
}
}
}
QueryDSL
3. Filtered Query
GET _search
{
"query": {
"bool": {
"must": {
"match": {
"text": “보닌 화장품“
}
},
"filter": {
"term": {
“gender": “M“
}
}
}
}
}
QueryDSL
4. Range Query
POST _search
{
“query”: {
“range” : {
“age”: {
“gte”: 10,
“lte”: 20
}
}
}
}
5. Sort
POST _search
{
“query”: {
“match” : {
“title”: “피부”
}
},
"sort": {
“_score”: {
“order”: “desc”
}
“regDate”: {
“order”: “desc”
}
}
}
QueryDSL
자동완성(Suggest) 사례
Indexing 아버지=
ㅇㅏㅂㅓㅈㅣ ㅇㅂㅈ
Query Prefix Query=
Suggest (Prefix 방식)
Indexing
아버지
=
ㅇ ㅇ
Query Match Query=
ㅇㅏ ㅇㅂ
ㅇㅏㅂ ㅇㅂㅈ
Suggest (Edge n-Gram 방식)
https://github.com/netcrazy/elasticsearch-jaso-analyzer
자동완성(Suggest) 개발사례
{
"settings": {
"analysis": {
"filter": {
"my_stop": {
"type": "stop",
"stopwords": ["and", "is", “the"]
}
}
}
}
}
1. 불용어 처리
2. 동의어 처리
https://www.elastic.co/guide/en/elasticsearch/reference/current/a
nalysis-synonym-tokenfilter.html
전치사, 조사, 관서, 접속사 등과 같이 주제색인어로서 의미가 없는 단어
기타
A사이트
A사이트 검색품질 개선사례 Case1 (1/2)
Query DSLSettings
Mappings
A사이트 검색품질 개선사례 Case1 (2/2)
크롤링
수집
국내뉴스 단어별
정제작업 키워드 저장소
Daily 정제 에이전트 수행Daily 크롤러 에이전트 수행
수집 및 저장
집계(Aggregation) 쿼리
A사이트
A사이트 활용사례 Case2
1. 추천시스템
MoreLikeThis
기타 활용사례 Case3 (1/2)
1. MoreLikeThis
QueryDSL
Response
기타 활용사례 Case3 (2/2)
감사합니다.

Mais conteúdo relacionado

Mais procurados

Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipelineJongho Woo
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영NAVER D2
 
정보검색과 Elasticsearch (크몽)
정보검색과 Elasticsearch (크몽)정보검색과 Elasticsearch (크몽)
정보검색과 Elasticsearch (크몽)크몽
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호NAVER D2
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.jsHeeJung Hwang
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문SeungHyun Eom
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교Woo Yeong Choi
 
About elasticsearch
About elasticsearchAbout elasticsearch
About elasticsearchMinsoo Jun
 
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기YongSung Yoon
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리YoungHeon (Roy) Kim
 
파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링HWANGTAEYONG
 
Fundamental of ELK Stack
Fundamental of ELK StackFundamental of ELK Stack
Fundamental of ELK Stack주표 홍
 
파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차Taekyung Han
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Seongyun Byeon
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기AWSKRUG - AWS한국사용자모임
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912Yooseok Choi
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Jin wook
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]MongoDB
 
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?Juhong Park
 

Mais procurados (20)

Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영[236] 카카오의데이터파이프라인 윤도영
[236] 카카오의데이터파이프라인 윤도영
 
정보검색과 Elasticsearch (크몽)
정보검색과 Elasticsearch (크몽)정보검색과 Elasticsearch (크몽)
정보검색과 Elasticsearch (크몽)
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
 
About elasticsearch
About elasticsearchAbout elasticsearch
About elasticsearch
 
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
[Spring Camp 2018] 11번가 Spring Cloud 기반 MSA로의 전환 : 지난 1년간의 이야기
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링
 
Fundamental of ELK Stack
Fundamental of ELK StackFundamental of ELK Stack
Fundamental of ELK Stack
 
파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
[KAIST 채용설명회] 데이터 엔지니어는 무슨 일을 하나요?
 

Semelhante a Elasticsearch development case

Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Gruter
 
What’s Evolving in the Elastic Stack
What’s Evolving in the Elastic StackWhat’s Evolving in the Elastic Stack
What’s Evolving in the Elastic StackElasticsearch
 
Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Minchul Jung
 
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
 
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장eungjin cho
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017Amazon Web Services Korea
 
Solr development case
Solr development caseSolr development case
Solr development case일규 최
 
Daum내부 Hadoop 활용 사례 | Devon 2012
Daum내부 Hadoop 활용 사례 | Devon 2012Daum내부 Hadoop 활용 사례 | Devon 2012
Daum내부 Hadoop 활용 사례 | Devon 2012Daum DNA
 
카카오에서의 Trove 운영사례
카카오에서의 Trove 운영사례카카오에서의 Trove 운영사례
카카오에서의 Trove 운영사례Won-Chon Jung
 
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석Amazon Web Services Korea
 
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
 
Spark은 왜 이렇게 유명해지고 있을까?
Spark은 왜 이렇게  유명해지고 있을까?Spark은 왜 이렇게  유명해지고 있을까?
Spark은 왜 이렇게 유명해지고 있을까?KSLUG
 
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)Amazon Web Services Korea
 
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
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)SANG WON PARK
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache TajoGruter
 
google dinos
google dinosgoogle dinos
google dinosjuhyun
 

Semelhante a Elasticsearch development case (20)

Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014
 
What’s Evolving in the Elastic Stack
What’s Evolving in the Elastic StackWhat’s Evolving in the Elastic Stack
What’s Evolving in the Elastic Stack
 
Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작
 
elasticsearch
elasticsearchelasticsearch
elasticsearch
 
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
Amazon kinesis와 elasticsearch service로 만드는 실시간 데이터 분석 플랫폼 :: 박철수 :: AWS Summi...
 
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
고성능 빅데이터 수집 및 분석 솔루션 - 티맥스소프트 허승재 팀장
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
 
Solr development case
Solr development caseSolr development case
Solr development case
 
Infiniflux introduction
Infiniflux introductionInfiniflux introduction
Infiniflux introduction
 
Daum내부 Hadoop 활용 사례 | Devon 2012
Daum내부 Hadoop 활용 사례 | Devon 2012Daum내부 Hadoop 활용 사례 | Devon 2012
Daum내부 Hadoop 활용 사례 | Devon 2012
 
카카오에서의 Trove 운영사례
카카오에서의 Trove 운영사례카카오에서의 Trove 운영사례
카카오에서의 Trove 운영사례
 
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
AWS Summit Seoul 2015 - 게임 서비스 혁신을 위한 데이터 분석
 
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
 
Spark은 왜 이렇게 유명해지고 있을까?
Spark은 왜 이렇게  유명해지고 있을까?Spark은 왜 이렇게  유명해지고 있을까?
Spark은 왜 이렇게 유명해지고 있을까?
 
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
20140528 AWS Meister BlackBelt - Amazon Kinesis (Korean)
 
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
 
REST Concept
REST ConceptREST Concept
REST Concept
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
 
google dinos
google dinosgoogle dinos
google dinos
 

Elasticsearch development case

  • 1. 2018. 4 (기준) 최일규 (ilkyu.choi@gmail.com) Elasticsearch 검색개발
  • 2. Lucene Elasticsearch Lucene은 확장 가능한 고성능 정보검색(IR, Information Retrieval) 라이브러리이다. Elasticsearch는 확장성이 뛰어난 Apache Lucene 프로젝 트에 기반을 둔 오픈소스 풀텍스트 검색 및 분석엔진입니다. Elasticsearch 란? - JSON document - RESTful APIs - Distributed - Multi-tenancy - Near Real Time
  • 4. 데이터 원본 정제 색인 평가 RDBMS OPEN-API 제휴DB 크롤링 자체생산 활용 데이터 (비)정규화 맵핑구조 데이터 클렌징 Logstash Bulk API 기타 Precision/Recall Explain Index Time Query Time 웹서비스 모바일 서비스 기타 1 2 3 4 5 검색서비스 개발과정
  • 5. 1. Term : 분석과정을 거치고 저장된 토큰의 최소단위를 텀(Term)이라고 한다. 2. Inverted Index : * 대용량 텍스트 검색을 위해 고안된 자료구조 Term Doc 1 Doc 2 Doc 3 출현빈도 quick O O O 3 brown O 1 예) “Quick brown” 주요용어 및 개념
  • 6. 1. 쿼리(Query)와 필터(Filter) 구분 쿼리(Query) 필터(Filter) 검색대상 전문검색(Full Text) 바이너리 구분(Y/N) 점수계산 O X 캐싱 X O 응답속도(성능) 느림 빠름 2. 쿼리와 필터 비교 • 엘라스틱서치에서 데이터를 찾고 구분하는 기능은 쿼리와 필터로 나뉨 • 쿼리와 필터는 모두 JSON형의 QueryDSL로 표현한다. • 필터는 문서의 수를 줄이는데 목표로 한다. 주요용어 및 개념
  • 7. 1. 정확율(precision), 재현율(recall) : 정보검색을 평가하는데 이용되는 지표 > 정확율 : 검색된 정보가 얼마나 적합하고 관련있는 문서의 비율 > 재현율 : 관련있는 문서들 중 실제로 검색된 문서의 비율 예) 대학생선교회, 대학생선교회 주요용어 및 개념
  • 8. 1. 이음 동의어 (Synonyms) 2. 연관어 단어 동의어(유의어) 초등학생 초딩, 초등생 파리바게트 빠리바게트, 파리바게뜨 콘크리트 공구리 휴대폰 휴대전화, 핸드폰 단어 연관어 문재인 100대 국정과제 빅뱅 지드래곤, 태양 이선희 히든싱어 시즌3 주요용어 및 개념
  • 9. 1. RDBMS VS Elasticsearch RDBMS Elasticsearch Database Index Table Type (ES 7.0 deprecated) Row Document Column Field Schema Mapping SQL Query DSL RDBMS와 데이터 구조 비교
  • 10. 1. TF (Term Frequency) - 한 문서에서 같은 검색어(term)가 많이 나타날수록 높은점수 부여 2. IDF (Inverse Document Frequency) - 해당term이 전체 Document set에 얼마나 나왔는지 측정 - 흔한 단어일수록 idf가 낮아지고 찾아보기 힘든 단어일수록 idf 높아짐 3. COORD (Coordination factor) - 검색질의가 여러 개의 term으로 이루어졌을경우 문서에서 매치되는 term 개수가 많을수록 높은점수 부여 4. lengthNorm - term이 크기가 작은 필드에서 출현할 수록 높은점수 부여 5. Query Time Boosting Scoring 계산
  • 11. Cluster Master Node Data Node Data Node 0 3 4 2 1 3 1 4 2 0 Shard (데이터 검색단위 인스턴스) Replica (샤드의 복사본) Primary shard Replica shard 인덱스 생성 또는 삭제 노드추적, 클러스터에 할당할 샤드결정 및 클러스터 상태관리 실제 데이터가 저장되는 노드 CRUD, 검색 및 집계와 같은 데이터 관련 작업수행 Elasticsearch 아키텍처
  • 12. Cluster Node1 Node2 0 3 2 2 1 3 0 9200 9201 9300 9301 1 9200번 부터 REST-API를 위한 HTTP통신포트 할당 9300번 부터 노드간 바인딩을 위한 포트로 할당 같은 클러스터 이름을 가지고 실행된 노드는 자동으로 바인딩 노드바인딩
  • 13. Analyzer 1개 Tokenizer N개 TokenFilter= + CharFilter HTMLStripper Tokenizer Standard Input TokenFilter Stopwords TokenFilter Lowercase Index Terms “<p>The quick brown Fox Jumps over the Lazy dog</p>” “The quick brown Fox Jumps over the Lazy dog” [“The”, “quick”, “brown”, “Fox”, “Jumps”, “over”, “the”, “Lazy”, “dog”] [“quick”, “brown”, “Fox”, “Jumps”, “over”, “Lazy”, “dog”] [“quick”, “brown”, “fox”, “jumps”, “over”, “lazy”, “dog”] Analyzer란?
  • 14. Standard Analyzer Built-in Analyzer Custom Analyzer Simple Analyzer Keyword Analyzer Whitespace Analyzer Pattern Analyzer 한글형태소 자동완성 (suggest) Elasticsearch Analyzer 유형
  • 15. Settings (Dynamic | Explicit) Mappings PUT /{_index} { “settings”: { “index”: { “number_of_shards”: 5, “number_of_replicas”: 2, “analysis”: { “analyzer”: {}, “tokenizer”: {}, “char_filter”: {}, “filer”: {} } } } } PUT /{_index} { “mappings”: { “type1”: { “properties”: { “field1”: { “type”: “text” } } } } } Create Document POST /{_index}/{_type} { “field1”: “Hello Elasticsearch” } + Index생성 및 Document생성
  • 16. 1. Term Query POST _search { "query": { "term" : { "user" : “피부" } } } 2. Match Query POST _search { "query": { “match" : { "user" : “피부 특성" } } } QueryDSL
  • 17. 3. Filtered Query GET _search { "query": { "bool": { "must": { "match": { "text": “보닌 화장품“ } }, "filter": { "term": { “gender": “M“ } } } } } QueryDSL
  • 18. 4. Range Query POST _search { “query”: { “range” : { “age”: { “gte”: 10, “lte”: 20 } } } } 5. Sort POST _search { “query”: { “match” : { “title”: “피부” } }, "sort": { “_score”: { “order”: “desc” } “regDate”: { “order”: “desc” } } } QueryDSL
  • 20. Indexing 아버지= ㅇㅏㅂㅓㅈㅣ ㅇㅂㅈ Query Prefix Query= Suggest (Prefix 방식)
  • 21. Indexing 아버지 = ㅇ ㅇ Query Match Query= ㅇㅏ ㅇㅂ ㅇㅏㅂ ㅇㅂㅈ Suggest (Edge n-Gram 방식)
  • 23. { "settings": { "analysis": { "filter": { "my_stop": { "type": "stop", "stopwords": ["and", "is", “the"] } } } } } 1. 불용어 처리 2. 동의어 처리 https://www.elastic.co/guide/en/elasticsearch/reference/current/a nalysis-synonym-tokenfilter.html 전치사, 조사, 관서, 접속사 등과 같이 주제색인어로서 의미가 없는 단어 기타
  • 26. 크롤링 수집 국내뉴스 단어별 정제작업 키워드 저장소 Daily 정제 에이전트 수행Daily 크롤러 에이전트 수행 수집 및 저장 집계(Aggregation) 쿼리 A사이트 A사이트 활용사례 Case2