elasticsearch의 기본적인 working에 대한 발표자료입니다.
특히나 logging보다는 '검색 서비스'에 포커싱된 자료이기 때문에 '한글검색' 으로 고통받으실 분들을 위한 기초 자료라 생각해주시면 감사하겠습니다.
맞지않는 정보와 오탈자 그리고 의문점이 든다면 dydwls121200@gmail.com으로 언제든지 가벼운 마음으로 메일주세요. 저 또한 성장시키는 일이기도 하니까요. 환영합니다.
오픈소스 검색엔진인 Elasticsearch 어떻게 저장하고 조회하는지 검색엔진의 개념에 대해서 간단히 살펴보고, Node.js 로 구현된 아주 간단한 예제를 소개합니다.
- 검색엔진과 Elasticsearch 소개
- Elasticsearch에서의 색인
- Elasticsearch에서의 조회
- Node.js 로 구현된 예제 소개
* 자바카페
자바카페 페이스북 : https://www.facebook.com/groups/javacafe/
자바카페 기술 블로그 : http://tech.javacafe.io/
elasticsearch의 기본적인 working에 대한 발표자료입니다.
특히나 logging보다는 '검색 서비스'에 포커싱된 자료이기 때문에 '한글검색' 으로 고통받으실 분들을 위한 기초 자료라 생각해주시면 감사하겠습니다.
맞지않는 정보와 오탈자 그리고 의문점이 든다면 dydwls121200@gmail.com으로 언제든지 가벼운 마음으로 메일주세요. 저 또한 성장시키는 일이기도 하니까요. 환영합니다.
오픈소스 검색엔진인 Elasticsearch 어떻게 저장하고 조회하는지 검색엔진의 개념에 대해서 간단히 살펴보고, Node.js 로 구현된 아주 간단한 예제를 소개합니다.
- 검색엔진과 Elasticsearch 소개
- Elasticsearch에서의 색인
- Elasticsearch에서의 조회
- Node.js 로 구현된 예제 소개
* 자바카페
자바카페 페이스북 : https://www.facebook.com/groups/javacafe/
자바카페 기술 블로그 : http://tech.javacafe.io/
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화BOAZ Bigdata
데이터 엔지니어링 프로젝트를 진행한 중고책나라 팀에서는 아래와 같은 프로젝트를 진행했습니다.
중고책 실시간 데이터를 활용하여 Elasticsearch Indexing 클러스터 성능 최적화
18기 금나연 숙명여자대학교 IT공학 전공
18기 박규연 국민대학교 소프트웨어학부
18기 김건우 국민대학교 AI빅데이터융합경영학과
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
NDC18에서 발표하였습니다. 현재 보고 계신 슬라이드는 2부 입니다.(총 2부)
- 1부 링크: https://goo.gl/3v4DAa
- 2부 링크: https://goo.gl/wpoZpY
(SlideShare에 슬라이드 300장 제한으로 2부로 나누어 올렸습니다. 불편하시더라도 양해 부탁드립니다.)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Seungmin Yu
2016년도 데이터야놀자에서 발표한 자료입니다.
멜론에서 InfluxDB + Telegraf + Grafana 조합으로 모니터링 시스템을 구축하고 활용한 사례를 발표한 내용입니다. 다양한 메트릭데이터와 DevOps 측면의 활용 가치에 대해서도 생각해 볼 수 있을 것 같습니다.
검색이 무엇인지, 검색모델링이 어떤 역할을 하는지 알아보고, 쇼핑 검색을 서비스하면서 발생했던 품질 문제와 이를 해결하기 위해 시도해본 것을 이야기하고자 합니다.
목차
1. 검색이란
2. 검색모델링
3. 검색모델 유사도
4. 구조적 검색 모델
대상
검색이나 검색모델링에 대해 알고 싶거나, NHN에서 서비스 중인 쇼핑 검색에 대해 알고 싶은 개발자
넥슨코리아 사내 발표자료로 왓 스튜디오에서 파이썬으로 《야생의 땅: 듀랑고》 서버를 비롯한 여러가지 도구를 만든 경험을 공유합니다.
- 게임서버와 각종 툴, 테스트/빌드/배포 시스템을 만들 때 사용한 재료
- 파이썬 코드 품질 개선, 디버깅, 프로파일링, 최적화
- 파이썬 오픈소스 생태계와 왓 스튜디오가 하는 오픈소스 활동
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화BOAZ Bigdata
데이터 엔지니어링 프로젝트를 진행한 중고책나라 팀에서는 아래와 같은 프로젝트를 진행했습니다.
중고책 실시간 데이터를 활용하여 Elasticsearch Indexing 클러스터 성능 최적화
18기 금나연 숙명여자대학교 IT공학 전공
18기 박규연 국민대학교 소프트웨어학부
18기 김건우 국민대학교 AI빅데이터융합경영학과
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
NDC18에서 발표하였습니다. 현재 보고 계신 슬라이드는 2부 입니다.(총 2부)
- 1부 링크: https://goo.gl/3v4DAa
- 2부 링크: https://goo.gl/wpoZpY
(SlideShare에 슬라이드 300장 제한으로 2부로 나누어 올렸습니다. 불편하시더라도 양해 부탁드립니다.)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Seungmin Yu
2016년도 데이터야놀자에서 발표한 자료입니다.
멜론에서 InfluxDB + Telegraf + Grafana 조합으로 모니터링 시스템을 구축하고 활용한 사례를 발표한 내용입니다. 다양한 메트릭데이터와 DevOps 측면의 활용 가치에 대해서도 생각해 볼 수 있을 것 같습니다.
검색이 무엇인지, 검색모델링이 어떤 역할을 하는지 알아보고, 쇼핑 검색을 서비스하면서 발생했던 품질 문제와 이를 해결하기 위해 시도해본 것을 이야기하고자 합니다.
목차
1. 검색이란
2. 검색모델링
3. 검색모델 유사도
4. 구조적 검색 모델
대상
검색이나 검색모델링에 대해 알고 싶거나, NHN에서 서비스 중인 쇼핑 검색에 대해 알고 싶은 개발자
넥슨코리아 사내 발표자료로 왓 스튜디오에서 파이썬으로 《야생의 땅: 듀랑고》 서버를 비롯한 여러가지 도구를 만든 경험을 공유합니다.
- 게임서버와 각종 툴, 테스트/빌드/배포 시스템을 만들 때 사용한 재료
- 파이썬 코드 품질 개선, 디버깅, 프로파일링, 최적화
- 파이썬 오픈소스 생태계와 왓 스튜디오가 하는 오픈소스 활동
12. 12
Elastic has all this.
Secure
Multi-lingual
Query language
Real-time Drill down
APIs
Data Sources
Enrichment
Alerting
Query Language
Unstructured
Search
Type ahead
High availability
Fast
Highlighting
Scalable
20. 20
RDBMS 에서는 데이터를 테이블 형태로 저장합니다.
열을 기준으로 인덱스를 만듭니다.
책의 맨 앞에 있는 제목 리스트와 같습니다.
DOC TEXT
1 The quick brown fox jumps over the lazy dog
2 Fast jumping rabbits
21. 21
검색엔진에서는 inverted index 라는 구조로
저장합니다.
RDBMS 와 반대 구조입니다.
텍스트를 다 뜯어서 검색어 사전을 만듭니다. (Term 이라고 합니다)
책의 맨 뒤에 있는 페이지를 가리키는 키워드 같습니다.
TOKEN (TERM) DOC TOKEN (TERM) DOC
Fast 2 jumps 1
The 1 lazy 1
brown 1 over 1
dog 1 quick 1
fox 1 rabbits 2
jumping 2 the 1
22. 22
실제로는 이렇게 저장됩니다.
텍스트를 저장할 때 몇가지 처리 과정을 거칩니다.
이 과정을 텍스트 분석 (Text Analysis) 라고 합니다.
TOKEN (TERM) DOC TOKEN (TERM) DOC
brown 1 lazi 1
dog 1 over 1
fast 1 , 2 quick 1 , 2
fox 1 rabbit 2
jump 1 , 2
23. 23
텍스트 분석 과정
문장을 분리합니다. 이 과정을 Tokenizing 이라고 합니다.
보통은 Whitespace Tokenizer 가 사용됩니다.
TOKEN (TERM) TOKEN (TERM) TOKEN (TERM) TOKEN (TERM)
Fast dog jumps quick
The fox lazy rabbits
brown jumping over the
TEXT
The quick brown fox jumps over the lazy dog
Fast jumping rabbits
24. 24
텍스트 분석 과정
Tokenized 된 Term 들을 가공합니다. 이 과정을 Token Filtering 이라고 합니다.
먼저 Lowercase Token Filter로 대소문자를 변환 합니다.
TOKEN (TERM) DOC TOKEN (TERM) DOC
Fast fast 2 jumps 1
The the 1 lazy 1
brown 1 over 1
dog 1 quick 1
fox 1 rabbits 2
jumping 2 the 1
25. 25
텍스트 분석 과정
토큰을 (보통 ascii 순서로) 재 정렬합니다.
TOKEN (TERM) DOC TOKEN (TERM) DOC
brown 1 lazy 1
dog 1 over 1
fast 2 quick 1
fox 1 rabbits 2
jumping 2 the 1
jumps 1 the 1
26. 26
텍스트 분석 과정
불용어(stopwords, 검색어로서의 가치가 없는 단어들) 를 제거합니다.
a, an, are, at, be, but, by, do, for, i, no, the, to … 등등
Stop Token Filter 가 사용됩니다.
TOKEN (TERM) DOC TOKEN (TERM) DOC
brown 1 lazy 1
dog 1 over 1
fast 2 quick 1
fox 1 rabbits 2
jumping 2 the 1
jumps 1 the 1
27. 27
텍스트 분석 과정
형태소 분석 과정을 거칩니다. 보통 ~s, ~ing 등을 제거하는 과정입니다.
보통 Snowball Token Filter 를 사용합니다.
한글은 의미 분석을 해야 해서 좀 더 복잡합니다.
TOKEN (TERM) DOC TOKEN (TERM) DOC
brown 1 lazy lazi 1
dog 1 over 1
fast 2 quick 1
fox 1 rabbits rabbit 2
jumping jump 2
jumps jump 1
28. 28
텍스트 분석 과정
jumping, jumps가 jump 로 똑같이 바뀌었으므로 토큰을 병합 해 줍니다.
TOKEN (TERM) DOC TOKEN (TERM) DOC
brown 1 lazi 1
dog 1 over 1
fast 2 quick 1
fox 1 rabbit 2
jump 1 , 2
29. 29
텍스트 분석 과정
동의어를 처리합니다.
Synonym Token Filter 를 이용해 동의어 사전을 정의할 수 있습니다.
TOKEN (TERM) DOC TOKEN (TERM) DOC
brown 1 lazi 1
dog 1 over 1
fast 1 , 2 quick 1 , 2
fox 1 rabbit 2
jump 1 , 2
30. 30
검색 과정
검색어도 똑같이 텍스트 처리를 합니다.
“The lazy rabbits” 라고 검색하면
The lazy rabbits
lazi
rabbit
1
DOC TEXT
1 The quick brown fox jumps over the lazy dog
2 Fast jumping rabbits
2
32. 32
한글 검색
한글은 복합어로 이루어진 언어입니다.
단순한 whitespace 기반이 아닌 단어 사전 기반의 분석이 필요합니다.
• 동해물과 백두산이
– 동해 + 물 / 백두 + 산
– 동 + 해물 / 백 + 두산
• 대학생선교회
– 대학생 + 선교 + 회
– 대학 + 생선 + 교회
33. 33
한글 형태소 분석기
Elasticsearch 에서 사용 가능한 한글 형태소 분석기는
아래와 같은 프로젝트들이 있습니다.
- 아리랑 : 이수명, 정호욱님
- 은전한닢 : 유영호, 이용운님
- open-korean-text : 유호현님
34. 34
2018. 08 – Nori 출시
https://www.elastic.co/kr/blog/nori-the-official-elasticsearch-plugin-for-
korean-language-analysis
35. 35
What is Nori?
• https://github.com/jimczi
• Creator of Kuromoji – Japanese Text Analyzer
• Contributor of MeCab
• 은전한닢의 mecab-ko-dic 사전을 사용합니다.
http://eunjeon.blogspot.com
• Nori는 Kuromoji 엔진의 코드를 fork 해서 mecab-ko-dic 사전을 적용시킨
Elasticsearch 독자적인 형태소 분석기 입니다.
Created by Jim Ferenczi