SlideShare a Scribd company logo
cnYES 如何使用 Elasticsearch
不只是新聞搜尋引擎
Cara Wang <caraw@cnyes.com>
1
要有資料
1. 所有與新聞相關的資料都要放入 cnYes 的 Elasticsearch
新聞本身
新聞圖片/新聞數據/新聞類別/...
總共 7 張 Table
2. Indexing
規劃資料結構,做 Mapping
把資料寫入 Elasticsearch
Analyzer
2
3
要有資料
1. 所有與新聞相關的資料都要放入 cnYes 的 Elasticsearch
新聞本身
新聞圖片/新聞數據/新聞類別/...
總共 7 張 Table
2. Indexing
規劃資料結構,做 Mapping
把資料寫入 Elasticsearch
Analyzer
Inverted Index
4
5
決定資料結構: Mapping
1. 搜尋先覺: 一切以 搜尋 好寫為優先
2. 扁平化 的資料呈現
6
author
決定資料結構: Mapping
1. 例子 1: 不扁平的資料呈現 - 資料
{
"newsId": 1,
" ": {
"code": "caraw",
"name": "Cara Wang",
"position": "BE"
},
"status": "actived"
01.
02.
03.
04.
05.
06.
07.
08.
7
"status": "actived"
決定資料結構: Mapping
1. 例子 1: 不扁平的資料呈現 - 搜尋
POST /_search
{ "query": { "filtered": { "filter": { "bool": { "must": [{
"term": {
}},{
"nested": {
"path": "author",
"query": {
01.
02.
03.
04.
05.
06.
07.
08.
8
"authorCode": "caraw"
"authorName": "Cara Wang"
"authorPosition": "BE"
決定資料結構: Mapping
1. 例子 2: 扁平的資料呈現 - 資料
{
"newsId": 1,
,
,
"status": "actived"
}
01.
02.
03.
04.
05.
06.
07.
9
"status": "actived"
決定資料結構: Mapping
1. 例子 2: 扁平的資料呈現 - 搜尋
{
"query": {
"bool": {
"must": [
{
"term": {
}
01.
02.
03.
04.
05.
06.
07.
08.
10
一些關於 Mapping 的小事情
1. 扁不扁平看開發需求
2. 特定欄位需不需要做 分析 看搜尋需求
name/code/position 需要被 分析 嗎?
{
"query": {
"bool": {
"must": [
{
"term": {
01.
02.
03.
04.
05.
06.
11
一些關於 Mapping 的小事情
1. 扁不扁平看開發需求
2. 特定欄位需不需要做 分析 看搜尋需求
name/code/position 需要被 分析 嗎?
3. 搜尋先覺是否都要屏棄 Nested Type?
Nested 內的屬性是有關聯的
例子: 把姓氏跟名子分開存時,兩者便存在強烈關聯
王思平 !== 陳思平
http://joelabrahamsson.com/elasticsearch-nested-mapping-and-filter/
12
一些關於 Indexing 的小事情
1. 已經上線的資料
不!不!不!
能!能!能!
砍!砍!砍!
2. 如何在重新做 Indexing 時不影響線上搜尋運作?
關鍵: 讓外面怎麼看都是同一個 Index
解決: 建立 Alias
13
14
15
16
17
18
開始搜尋囉!
19
"status": "actived"
Query DSL
{
"query": {
"bool": {
"must": [
{
"term": {
}
},
{
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
20
2330
Query DSL-全文搜尋
post /_search
{
"query": {
"match": {
"_all": " "
}
}
}
01.
02.
03.
04.
05.
06.
07.
08.
21
2330
Query DSL-全文搜尋
{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": " ",
"fields": ["title","content"]
}
}
}
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
22
Query DSL-全文搜尋
1. 改搜尋 台積電 試試看
2. 中文斷詞的難處
3. 使用 _analyzer 測試斷詞
curl -XGET localhost:9200/sharing/_analyze -d '台積電'
23
24
Query DSL-全文搜尋
1. 改搜尋 台積電 試試看
2. 中文斷詞的難處
3. 使用 _analyzer 測試斷詞
4. 解決中文斷詞: 更改分析方式
使用 IK Analysis for Elasticsearch
https://github.com/medcl/elasticsearch-analysis-ik
curl -XGET localhost:9200/sharing/_analyze?tokenizer=ik_smart
25
26
Query DSL-全文搜尋
1. 改搜尋 林全 試試看
27
28
29
Query DSL-全文搜尋
1. 改搜尋 林全 試試看
2. 使用 _analyzer 測試斷詞
地區性的慣用詞
curl -XGET localhost:9200/sharing/_analyze?tokenizer=ik_smart
30
Query DSL-全文搜尋
1. 改搜尋 林全 試試看
2. 使用 _analyzer 測試斷詞
地區性的慣用詞
符合使用者搜尋習慣的 字典檔
ik 可以設定自動更新字典檔,無需重啟 Elasticsearch Server
31
32
一些關於 Query DSL 的小事
1. 如何決定哪些詞要被加到字典檔?
Google Analytics 站內搜尋
搜尋後停留的時間極短,或搜尋離開 100%
但要小心,不一定是加字典檔就能解決
33
34
35
一些關於 Query DSL 的小事
1. 如何決定哪些詞要被加到字典檔?
Google Analytics 站內搜尋
搜尋後停留的時間極短,或搜尋離開 100%
但要小心,不一定是加字典檔就能解決
搜尋建議
36
37
一些關於 Query DSL 的小事
1. 如何決定哪些詞要被加到字典檔?
Google Analytics 站內搜尋
搜尋後停留的時間極短,或搜尋離開 100%
但要小心,不一定是加字典檔就能解決
搜尋建議
搜尋優化沒有結束的一天...
38
不只是搜尋引擎!
39
"台"
搜尋建議
POST _suggest
{
"suggest" : {
"text" : ,
"completion":{
"field" : "keywordForAutoComplete",
"size": 10
}
}
}
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
40
41
相關新聞
1. 原本: 同類別下隨機抓取 n 則新聞
2. 修正: 分析內文,取得真正相關的新聞
42
43
44
45
46
相關新聞: 成效
1. 時間區間: 2016/06/07 ~ 2016/06/13
2. 點擊數: 相關新聞的點擊數較其他新聞多了 44%
47
看 code 時間
48
幾件必須做的基礎工程
1. 在 Laravel 中整合 Elasticsearch
Full Re-build: 有機會重新分析資料
Command: php artisan elasticsearch:all --v
Wrapper: 串官方的 library,方便打 API
Synchronization: 即時同步 CMS 新增/修改/刪除 動作
Full Re-build 時,用 Cache 通知同步動作要同時發生在新的與舊的
index
49
Q & A
50

More Related Content

Viewers also liked

ΥΠAAT: Οδηγός για τον χαρακτηρισμό νεοεισερχόμενων στον αγροτικό τομέα ως επα...
ΥΠAAT: Οδηγός για τον χαρακτηρισμό νεοεισερχόμενων στον αγροτικό τομέα ως επα...ΥΠAAT: Οδηγός για τον χαρακτηρισμό νεοεισερχόμενων στον αγροτικό τομέα ως επα...
ΥΠAAT: Οδηγός για τον χαρακτηρισμό νεοεισερχόμενων στον αγροτικό τομέα ως επα...
Panayotis Sofianopoulos
 
BC12 Oral presentation
BC12 Oral presentationBC12 Oral presentation
BC12 Oral presentation
Nichole Meadows
 
Conscious Leadership: How to Become an Inspirational Leader for the 21st Century
Conscious Leadership: How to Become an Inspirational Leader for the 21st CenturyConscious Leadership: How to Become an Inspirational Leader for the 21st Century
Conscious Leadership: How to Become an Inspirational Leader for the 21st Century
Runa Bouius
 
KALPITA[1] (1) (3) (3)
KALPITA[1] (1) (3) (3)KALPITA[1] (1) (3) (3)
KALPITA[1] (1) (3) (3)
Kalpita pawar
 
S2017 1. ansøgning Magasin dansk
S2017 1. ansøgning Magasin danskS2017 1. ansøgning Magasin dansk
S2017 1. ansøgning Magasin danskHenriette Pilegaard
 
Learning model ppbi
Learning model   ppbiLearning model   ppbi
Learning model ppbi
sariindahsn
 
Islami andolan-foroj-keno
Islami andolan-foroj-kenoIslami andolan-foroj-keno
Islami andolan-foroj-keno
Ala uddin
 
Greenmash – Case Study – National Scale V2
Greenmash – Case Study – National Scale V2Greenmash – Case Study – National Scale V2
Greenmash – Case Study – National Scale V2
andrew wyborn
 
El planner
El plannerEl planner
Ppt
PptPpt
Descriptive text
Descriptive textDescriptive text
Descriptive text
sariindahsn
 
Print prezent anastassia filatova
Print prezent anastassia filatovaPrint prezent anastassia filatova
Print prezent anastassia filatova
Анастасия Филатова
 
מאמר על התאמת תכשיטים למבנה הפנים 25.3.15
מאמר על התאמת תכשיטים למבנה הפנים 25.3.15מאמר על התאמת תכשיטים למבנה הפנים 25.3.15
מאמר על התאמת תכשיטים למבנה הפנים 25.3.15Adi Badihi
 

Viewers also liked (16)

Eksplosiv afskalning av betong
Eksplosiv afskalning av betongEksplosiv afskalning av betong
Eksplosiv afskalning av betong
 
ΥΠAAT: Οδηγός για τον χαρακτηρισμό νεοεισερχόμενων στον αγροτικό τομέα ως επα...
ΥΠAAT: Οδηγός για τον χαρακτηρισμό νεοεισερχόμενων στον αγροτικό τομέα ως επα...ΥΠAAT: Οδηγός για τον χαρακτηρισμό νεοεισερχόμενων στον αγροτικό τομέα ως επα...
ΥΠAAT: Οδηγός για τον χαρακτηρισμό νεοεισερχόμενων στον αγροτικό τομέα ως επα...
 
BC12 Oral presentation
BC12 Oral presentationBC12 Oral presentation
BC12 Oral presentation
 
Windows 10 and Photoshop.PDF
Windows 10 and Photoshop.PDFWindows 10 and Photoshop.PDF
Windows 10 and Photoshop.PDF
 
Conscious Leadership: How to Become an Inspirational Leader for the 21st Century
Conscious Leadership: How to Become an Inspirational Leader for the 21st CenturyConscious Leadership: How to Become an Inspirational Leader for the 21st Century
Conscious Leadership: How to Become an Inspirational Leader for the 21st Century
 
KALPITA[1] (1) (3) (3)
KALPITA[1] (1) (3) (3)KALPITA[1] (1) (3) (3)
KALPITA[1] (1) (3) (3)
 
S2017 1. ansøgning Magasin dansk
S2017 1. ansøgning Magasin danskS2017 1. ansøgning Magasin dansk
S2017 1. ansøgning Magasin dansk
 
Learning model ppbi
Learning model   ppbiLearning model   ppbi
Learning model ppbi
 
Islami andolan-foroj-keno
Islami andolan-foroj-kenoIslami andolan-foroj-keno
Islami andolan-foroj-keno
 
Greenmash – Case Study – National Scale V2
Greenmash – Case Study – National Scale V2Greenmash – Case Study – National Scale V2
Greenmash – Case Study – National Scale V2
 
Project
ProjectProject
Project
 
El planner
El plannerEl planner
El planner
 
Ppt
PptPpt
Ppt
 
Descriptive text
Descriptive textDescriptive text
Descriptive text
 
Print prezent anastassia filatova
Print prezent anastassia filatovaPrint prezent anastassia filatova
Print prezent anastassia filatova
 
מאמר על התאמת תכשיטים למבנה הפנים 25.3.15
מאמר על התאמת תכשיטים למבנה הפנים 25.3.15מאמר על התאמת תכשיטים למבנה הפנים 25.3.15
מאמר על התאמת תכשיטים למבנה הפנים 25.3.15
 

Similar to cnYes 如何使用 elasticsearch

Elasticsearch search engine_development_tips
Elasticsearch search engine_development_tipsElasticsearch search engine_development_tips
Elasticsearch search engine_development_tips
YI-CHING WU
 
9
99
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
Frank S.C. Tseng
 
Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿yiditushe
 
HW4_0711282.pdf
HW4_0711282.pdfHW4_0711282.pdf
HW4_0711282.pdf
ssuser854bf9
 
【第一季第四期】JavaScript Optimization
【第一季第四期】JavaScript Optimization【第一季第四期】JavaScript Optimization
【第一季第四期】JavaScript Optimizationtbosstraining
 
香港六合彩
香港六合彩香港六合彩
ev2oik
ev2oikev2oik
香港六合彩
香港六合彩香港六合彩
香港六合彩
aaveow
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程yiditushe
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程appollo0312
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renrend0nn9n
 
Elasticsearch 簡介
Elasticsearch 簡介Elasticsearch 簡介
Elasticsearch 簡介
Jui An Huang (黃瑞安)
 
Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享晓锋 陈
 
Oracle 索引介紹
Oracle 索引介紹Oracle 索引介紹
Oracle 索引介紹
Chien Chung Shen
 
Spry框架的简单使用小结
Spry框架的简单使用小结Spry框架的简单使用小结
Spry框架的简单使用小结sunnylqm
 
Android動態ui介面設計
Android動態ui介面設計Android動態ui介面設計
Android動態ui介面設計艾鍗科技
 
实验报告4:使用SQL语句进行SQL Server 2000数据库操作
实验报告4:使用SQL语句进行SQL Server 2000数据库操作实验报告4:使用SQL语句进行SQL Server 2000数据库操作
实验报告4:使用SQL语句进行SQL Server 2000数据库操作byron zhao
 
实验报告4:使用SQL语句进行SQL Server 2000数据库操作
实验报告4:使用SQL语句进行SQL Server 2000数据库操作实验报告4:使用SQL语句进行SQL Server 2000数据库操作
实验报告4:使用SQL语句进行SQL Server 2000数据库操作byron zhao
 
SQL 語法入門 - SARG
SQL 語法入門 - SARGSQL 語法入門 - SARG
SQL 語法入門 - SARG
Study4TW
 

Similar to cnYes 如何使用 elasticsearch (20)

Elasticsearch search engine_development_tips
Elasticsearch search engine_development_tipsElasticsearch search engine_development_tips
Elasticsearch search engine_development_tips
 
9
99
9
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
 
Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿Itpub电子杂志第四期第二稿
Itpub电子杂志第四期第二稿
 
HW4_0711282.pdf
HW4_0711282.pdfHW4_0711282.pdf
HW4_0711282.pdf
 
【第一季第四期】JavaScript Optimization
【第一季第四期】JavaScript Optimization【第一季第四期】JavaScript Optimization
【第一季第四期】JavaScript Optimization
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
ev2oik
ev2oikev2oik
ev2oik
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renren
 
Elasticsearch 簡介
Elasticsearch 簡介Elasticsearch 簡介
Elasticsearch 簡介
 
Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享
 
Oracle 索引介紹
Oracle 索引介紹Oracle 索引介紹
Oracle 索引介紹
 
Spry框架的简单使用小结
Spry框架的简单使用小结Spry框架的简单使用小结
Spry框架的简单使用小结
 
Android動態ui介面設計
Android動態ui介面設計Android動態ui介面設計
Android動態ui介面設計
 
实验报告4:使用SQL语句进行SQL Server 2000数据库操作
实验报告4:使用SQL语句进行SQL Server 2000数据库操作实验报告4:使用SQL语句进行SQL Server 2000数据库操作
实验报告4:使用SQL语句进行SQL Server 2000数据库操作
 
实验报告4:使用SQL语句进行SQL Server 2000数据库操作
实验报告4:使用SQL语句进行SQL Server 2000数据库操作实验报告4:使用SQL语句进行SQL Server 2000数据库操作
实验报告4:使用SQL语句进行SQL Server 2000数据库操作
 
SQL 語法入門 - SARG
SQL 語法入門 - SARGSQL 語法入門 - SARG
SQL 語法入門 - SARG
 

More from Szuping Wang

Laradebut #5 - 關於 CRUD 外的一點小事
Laradebut #5 - 關於 CRUD 外的一點小事Laradebut #5 - 關於 CRUD 外的一點小事
Laradebut #5 - 關於 CRUD 外的一點小事
Szuping Wang
 
Laradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTHLaradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTH
Szuping Wang
 
Api survey #5 - firebase cloud messaging
Api survey #5  - firebase cloud messagingApi survey #5  - firebase cloud messaging
Api survey #5 - firebase cloud messaging
Szuping Wang
 
API Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseAPI Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime database
Szuping Wang
 
cnYES 的新聞數據分析資料
cnYES 的新聞數據分析資料cnYES 的新聞數據分析資料
cnYES 的新聞數據分析資料
Szuping Wang
 
team18_媒體偏坦度
team18_媒體偏坦度team18_媒體偏坦度
team18_媒體偏坦度Szuping Wang
 
Git 好吃嗎
Git 好吃嗎Git 好吃嗎
Git 好吃嗎
Szuping Wang
 

More from Szuping Wang (7)

Laradebut #5 - 關於 CRUD 外的一點小事
Laradebut #5 - 關於 CRUD 外的一點小事Laradebut #5 - 關於 CRUD 外的一點小事
Laradebut #5 - 關於 CRUD 外的一點小事
 
Laradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTHLaradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTH
 
Api survey #5 - firebase cloud messaging
Api survey #5  - firebase cloud messagingApi survey #5  - firebase cloud messaging
Api survey #5 - firebase cloud messaging
 
API Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime databaseAPI Survey #2 - Firebase realtime database
API Survey #2 - Firebase realtime database
 
cnYES 的新聞數據分析資料
cnYES 的新聞數據分析資料cnYES 的新聞數據分析資料
cnYES 的新聞數據分析資料
 
team18_媒體偏坦度
team18_媒體偏坦度team18_媒體偏坦度
team18_媒體偏坦度
 
Git 好吃嗎
Git 好吃嗎Git 好吃嗎
Git 好吃嗎
 

cnYes 如何使用 elasticsearch