SlideShare a Scribd company logo
ElasticSearch에 대해 알아보자.txt
당근마켓
SoftwareEngineer
dydwls121200@gmail.com
(2019.04 ~) 조 용진
당근마켓 (2019.04 ~)
플랫폼개발팀
모두의캠퍼스 (2017.05 ~ 2019.03)
- 나는 개발잘하니까 들어갔는데, 생각보다 쉽지 않음
- 현실은 만만하지 않았음. 사장은 잘했는데 내가 부족했음
- 사장과 함께 당근마켓 랜딩
모빌C&C (2016.07 ~ 2017.01)
- 대학생활동안 SI Stack에 맞는 공부함
- 상상속 SI와 현실은 달랐다.
- 정직원 할까 말까 하다 괴리감에 후퇴
가천대 (2011.03 ~ 2017.08)
- 기타에 이 한몸 바쳤음(사실 엄청 못침)
- 기타칠때만, 술, 담배, 음악이면 되는 히피같은 생활 함
- 군대 갔다 와서 정신차림(군버프는 실존했다)
각설
ElasticSearch는 정말 잘 만든 엔진이다.
당근마켓의 검색에는
ElasticSearch를 사용한다.
ElasticSearch를 4년 넘게 써오고 있지만
엔진 자체에 뭔가 이렇다할 장애가 없었다.
(물론, 뭔가 특별히 커다란 뭔가를 하지 않기도 했다.)
그러므로, ElasticSearch는 정말 잘 만든 엔진이다.
(클러스터링과 샤딩 안정성 ㅆㅅㅌㅊ)
ElasticSearch는 다들 알겠지만
로그분석 및 검색의 역할로 사용한다.
이번 발표에서는 ElasticSearch를 이용한
검색서비스를 만드는 이야기를 하려고 한다.
별 이유 없지만, 이번달 AWSKRUG 발표 테마를 검색으로 맞추고 싶었다. 검색은 굉장히
재밌다.
Elasticsearch 엘라스틱서치 (검색서비스) 에 대해 알아보자.txt
ElasticSearch는 검색엔진으로 좋나요?
검색에 대한 도메인은 없고, 러닝커브가질 시간도 없는데
like search(ngram)으로 충분하다면 sphinx, AWS cloud search를
쓰세요.
러닝커브 타임이 있어도 괜찮고, 장기적으로 고도화를 할 계획이라면
ElasticSearch 추천해요.
검색경력이 수 년 가까이되고, 산전수전 겪으신 분이라면..
저 좀 알려주세요. 아니면 당근마켓의 동료가 되는건 어때요…?
간단히 짚고 넘어가는 ElasticSearch
ElasticSearch는 여러개의 index를 가질 수 있고 RDBMS에서는 Table,
NoSQL에서는 collection과 같은 개념이다.
ElasticSearch는 클러스터를 구성해서 운영하고,
클러스터 회복 및 확장에 많은 기능을 제공한다.
Index를 만들때에는 mapping이라는것을 정의 해 주어야 하는데
schema정의와 같다
mapping에서는 field라는 속성이 있는데,
이 속성 마다의 설정이 검색성능에 중요한 factor가 된다.
1개의 mapping field를 위한 설정은 type과 analyzer로 설정하며
analyzer를 만들기위해서는 char filter, tokenizer, token filter를
조합해서 만들어야 한다.
field
…
(fields)
index의 mapping
type
analyzer
char filter
tokenizer
token filter
field
…
(생략)
[Source]
n개의 Char. Filter
1개의 Tokenizer
n개의 Token Filter
[Output]
Analyzer는 term을 추출하는 녀석이며,
저장과 검색시 term을 추출할 때 다음과 같이
동작한다.
응? 텀? term?
term = 색인어(검색에 사용되는 단어)
한개의 문서에 ‘블랙핑크’가 ‘블랙핑크’는 ‘블랙핑크’와 ‘블랙핑크’를
가, 는, 와, 를 상관없이 검색당할 factor 가 바로 term
왜 저장과 검색시에 term을 추출해야해?
“Analyzer는 term을 추출하는 녀석이며,
저장과 검색시 term을 추출할 때 다음과 같이 동작한다.”
Inverted Index란 것을 만들어야 합니다.
데이터 저장시에 term(word)을 추출해서 문서와 연결을 짓는 vector
space입니다.
검색어에 term(word) 중에 Inverted Index에
해당하는 문서가 있으면 출력할 수 있습니다.
그러므로, Analyzer는 Inverted Index에 저장될
term의 형태를 정의한다.
Analyzer는 term을 추출한다. 그렇다면 한글은 어떻게…?
“아버지가방에들어가신다 ”, “사람 주차장”, “지하 자동차 주차장”
‘블랙핑크’가 ‘블랙핑크’는 ‘블랙핑크’와 ‘블랙핑크’를
영어는 whitespace기준으로 term을 뽑고… 전치사 대명사 등 빼면 유의미한 단어가 남아도..
한글은? 어떻게? 뽑지? 가,는,와,를
형태소 분석기
nori, mecab, kolnpy, korea-open-text,
eunjoen, seunjeon, arirang
어디서 들어본거는 같은데, 이건 뭘까?
ElasticSearch 입장에서 보면 형태소분석기는
품사에 따라 단어들을 쪼개주는 역할을 한다.
Tokenizer!
“아버지가방에들어가신다” => “아버지” “가” “방” “에” “들어가” “신다”
품사 뿐만 아니라, 복합명사도
쪼개버린다.
‘이사업체’ => ‘이사’, ‘업체’
만약 안쪼개진다면?
쇼핑몰에서 “갤럭시핸드폰” 이라 검색하면
“갤럭시”, “핸드폰” 으로 분리가 안되어서 “갤럭시핸드폰” 이라는 term을 찾게됨
엄연히 “갤럭시”와 “갤럭시핸드폰”은 inverted index vector space에서는
부분집합도 뭣도 아닌 다른 term임.
때문에, “갤럭시” term이 포함된 상품이 안나오게 됨
term을 갖고 있는 문서들을 출력했지만, sorting은 제 멋대로다.
때문에 문서들 간에 ranking결정에 사용하는것이 바로 TF-IDF
Term Frequency - Inverse Document Frequency
TF - 문서 당 특정 단어의 빈도가 높으면 해당 단어는 문서를 대표하는 단어라 생각한다
IDF - 문서군 사이에서 자주 등장(DF)하는 단어면 중요하지 않은단어기 때문에 inverse 값을
이용한다.
ElasticSearch의 ranking score에는
기본적으로 TF-IDF를 이용한다.(w BM25)
문서를 찾는 것과 정렬하는 것에 대해서 알아보았다.
그렇다면 이것은 물리적으로 누가 하는가?
Lucene Engine
Lucene
Elasticsearch에서 실질적으로 검색을 수행해주는
녀석
?
Elasticsearch에 Lucene이 어디있어?
샤드
(Shard)
샤드(shard) => Lucene
Shard는
데이터베이스 샤드는 데이터베이스나 웹 검색 엔진의 데이터의 수평 분할이다.
개개의 파티션은 샤드 또는 데이터베이스 샤드로 부른다.
각 샤드는 개개의 데이터베이스 서버 인스턴스에서 부하 분산을 위해 보유하고 있다.
출처 - 클러스터 설계하기 - #1 검색 성능과 샤드 개수 by 강진우
검색은 Lucene이 해주는데
ElasticSearch는 뭐 해?
- 검색 빼고 다 -
샤드관리, 클러스터관리, 각종플러그인(보안, 유틸, ML detection,
APM)
그래 검색과 ElasticSearch에 대한건
어느~~정도는 알게되었다.
나머지는 실무로 뚜드려 맞다보면 알게된다.
우리인생 화이팅 :D
끝!

More Related Content

PDF
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
PPTX
Elasticsearch 한글 형태소 분석기 Nori 노리
PDF
Elastic Search (엘라스틱서치) 입문
PDF
[2D1]Elasticsearch 성능 최적화
PPTX
elasticsearch_적용 및 활용_정리
PPTX
검색엔진이 데이터를 다루는 법 김종민
PDF
Introduction to elasticsearch
PPTX
Elastic Stack Introduction
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Elasticsearch 한글 형태소 분석기 Nori 노리
Elastic Search (엘라스틱서치) 입문
[2D1]Elasticsearch 성능 최적화
elasticsearch_적용 및 활용_정리
검색엔진이 데이터를 다루는 법 김종민
Introduction to elasticsearch
Elastic Stack Introduction

What's hot (20)

PPTX
Elastic - ELK, Logstash & Kibana
PPTX
Elastic stack Presentation
PDF
[216]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색
PDF
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
PPTX
ELK Stack
PDF
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
PDF
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
PDF
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
PDF
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
PDF
webservice scaling for newbie
PDF
Amazon Redshift 아키텍처 및 모범사례::김민성::AWS Summit Seoul 2018
PDF
Amazon SageMaker 모델 배포 방법 소개::김대근, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
PPTX
엘라스틱 서치 세미나
PDF
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
PPTX
Elastic search overview
PDF
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
PDF
Data Warehouse vs. Data Lake vs. Data Streaming – Friends, Enemies, Frenemies?
PDF
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
PDF
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
Elastic - ELK, Logstash & Kibana
Elastic stack Presentation
[216]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
ELK Stack
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
webservice scaling for newbie
Amazon Redshift 아키텍처 및 모범사례::김민성::AWS Summit Seoul 2018
Amazon SageMaker 모델 배포 방법 소개::김대근, AI/ML 스페셜리스트 솔루션즈 아키텍트, AWS::AWS AIML 스페셜 웨비나
엘라스틱 서치 세미나
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Elastic search overview
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Data Warehouse vs. Data Lake vs. Data Streaming – Friends, Enemies, Frenemies?
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
Ad

Similar to Elasticsearch 엘라스틱서치 (검색서비스) 에 대해 알아보자.txt (20)

PDF
정보검색과 Elasticsearch (크몽)
PPTX
Elasticsearch development case
PPTX
elasticsearch
PPTX
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
PDF
Ch1 일래스틱서치 클러스터 시작
PPTX
20151022 elasticsearch 적용및활용_송준이_sds발표용
PDF
Elasticsearch를 활용한 GIS 검색
PPTX
Elastic Search Performance Optimization - Deview 2014
PDF
Elastic Stack & Data pipeline (1장)
PDF
Elasticsearch server Chapter5
PDF
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
PPTX
Logstash, ElasticSearch, Kibana
PDF
엘라스틱서치, 로그스태시, 키바나
PDF
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
PPTX
Fundamental of ELK Stack
PDF
[4차]구글 알고리즘 분석(151106)
PDF
형태소 분석기를 적용한 elasticsearch 운영
PDF
[215]네이버콘텐츠통계서비스소개 김기영
PPTX
Tech talk 1 - 이윤구
PDF
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
정보검색과 Elasticsearch (크몽)
Elasticsearch development case
elasticsearch
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
Ch1 일래스틱서치 클러스터 시작
20151022 elasticsearch 적용및활용_송준이_sds발표용
Elasticsearch를 활용한 GIS 검색
Elastic Search Performance Optimization - Deview 2014
Elastic Stack & Data pipeline (1장)
Elasticsearch server Chapter5
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
Logstash, ElasticSearch, Kibana
엘라스틱서치, 로그스태시, 키바나
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
Fundamental of ELK Stack
[4차]구글 알고리즘 분석(151106)
형태소 분석기를 적용한 elasticsearch 운영
[215]네이버콘텐츠통계서비스소개 김기영
Tech talk 1 - 이윤구
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
Ad

More from 용진 조 (10)

PDF
당근마켓에서 IaC경험
PDF
신입개발자가 스타트업에서 AWS로 어떻게든 살아가는 썰
PDF
서버리스에 람다 대해 알아보자 [이론편] - 1
PDF
how to use fiddler (Ver eng)
PDF
Fiddler 피들러에 대해 알아보자
PPTX
XSS 에 대해서 알아보자. [실습 포함]
PPTX
유비쿼터스의 클라우드
PDF
캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic
PPTX
201133271 조용진 io t 발표
PPTX
개발자는 원래 말을 잘 못해요?
당근마켓에서 IaC경험
신입개발자가 스타트업에서 AWS로 어떻게든 살아가는 썰
서버리스에 람다 대해 알아보자 [이론편] - 1
how to use fiddler (Ver eng)
Fiddler 피들러에 대해 알아보자
XSS 에 대해서 알아보자. [실습 포함]
유비쿼터스의 클라우드
캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic
201133271 조용진 io t 발표
개발자는 원래 말을 잘 못해요?

Elasticsearch 엘라스틱서치 (검색서비스) 에 대해 알아보자.txt