SlideShare ist ein Scribd-Unternehmen logo
1 von 69
Elastic Stack
Log Analysis – Day 1
講師:吳奕慶
About me – 吳奕慶
• 目前任職趨勢科技股份有限公司
• 核心研發部門技術經理,團隊技術的前導者。
• 系統架構設計及開發 13 年以上經驗
• 連續 6 屆微軟全球最有價值專家 MVP (2004~2010年)
• 超過 6 年的 Solr 搜索引擎的開發應用經驗
• 專注於搜索引擎 (Solr, Elasticsearch) 的研究,並樂於分享技術。
• Interested in programming, investigate technology
• Slideshare : http://goo.gl/cUizu5
2
課程目標
• 讓參訓之學員能夠瞭解正確的觀念與方法及工具的應用
• 學習如何將大數據(Big Data) 進行視覺化分析之能力
• 利用 ELK Stack 套件來操作及應用數以千萬計的資料,
• 期能夠在短時間內快速建構出高效能的資料視覺化分析的執行環
境和服務
• 將以實作方式讓學員了解如何透過 ELK 三大套件架構進行大數據
資料處理、分析與產出視覺化的報表。
3
課程大綱
• ELK 功能剖析
• Elasticsearch 簡介
• Logstash 簡介
• Kibana 簡介
• Elasticsearch 深度學習
• 搜索引擎概念解說
• Elasticsearch 原理介紹
• Elasticsearch 叢集配置及安裝
• Elasticsearch 相關外掛套件介紹
• Elasticsearch 新增、刪除、修改操作
• Elasticsearch 基本、篩選及組合查詢
• 認識 Apache Lucene
• Logstash 魅力探索
• Logstash 原理介紹
• Logstash 安裝及配置
• Logstash 外掛套件介紹與安裝
• Logstash input 資料來源輸入
• Logstash codec 編碼與解碼器應用解說
• Logstash filter 資料篩選配置
• Logstash output 輸出配置
• Kibana 視覺報表
• Kibana 安裝及配置
• Kibana 基本功能
• Kibana 常用圖表介紹
• 利用 Kibana 建立圖形化報表
4
課程參考文件
• GitHub:
• https://github.com/dozerwu/elastic-stack-material
• Git Sample:
• git clone git@github.com:dozerwu/elastic-stack-material.git
5
What is log ?
• Log 資料紀錄,可以是任何結構化或非結構化的資料:
• 非結構化 - 一篇 Blog 文章,一個 Word 或 PDF 檔,甚至 Twitter 的
Tweets。
• 結構化 - 系統的 access log,application log,財務交易資料,IOT log
,資料庫內的資料等等。
• Tomcat
• Apache server access log
• IIS log
6
處理 Log 時,遇到甚麼問題?-(1)
• 如何解決此問題?
7
來源 : http://goo.gl/RaxXGE
處理 Log 時,遇到甚麼問題?-(2)
• 不同的 Log 格式
• CPU , disk , network usage
• Syslog, Windows logs, Application logs
• Apache, Nginx, IIS, MySQL, MS SQL, Oracle, etc.
• ERP, CRM, E-Commerce, etc.
• Networking, Firewall logs
• Social networking, User access logs
• word, pdf, csv, html web page, etc.
8
處理 Log 時,遇到甚麼問題?-(3)
• 不同的日期格式
• 142920788
• Oct. 12 23:21:45
• [5/May/2016:08:09:10 +0000]
• Tue 01-01-2016 6:00
• 2016-08-01 T 05:45 UTC
• Sat Jul 23 02:16:57 2016
• 08:21, 06 August 2016(UTC)
9
處理 Log 時,遇到甚麼問題?-(4)
• Log 散佈在各伺服器上,非集中管理。
• 日誌紀錄檔分布各處
• 需登入每台伺服器處理
• IT 維運人員需使用各種指令及工具來蒐集
• Linux syslog - tail / grep / sed / awk /sort /cut
• Windows system - admin GUI console / powershell script /vbscript
• Hadoop / Spark log tools
• Database - Oracle / Mysql /MS SQL / MongoDB Tools
• Application Server - IIS Log / Apache log /Nginx Tools
10
處理 Log 時,遇到甚麼問題?-(5)
• 蒐集後的資料怎麼應用 ?
• 報表分析:
• 使用者的瀏覽器版本統計
• 同一使用者看了哪幾項產品或網頁
• 每個月銷售前 10 名產品,也看了哪些產品?
• 協助分析潛在的行銷標的
• 支援業務面大量數據分析
• 警示: 提前發現系統問題
• CPU, Memory, I/O Disk, Networking 負載
• 系統發生 404 及 503 錯誤次數及時間
11
曙光 - ELK Stack 的現身
• 由 Elasticsearch, Logstash, Kibana 三個開放原始碼工具所組成
• ELK 為這三個工具的英文名的第一個字母合併後稱之。
• 經常互相搭配在即時的大量資料查詢及分析情境下使用。
• 目前由 Elastic 公司所維護
• 近期 ELK Stack 已被正名為 Elastic Stack
12
全新的 Elastic Stack 架構?
13
Elastic Stack 三大元件與資料處理流程
14
Elasticsearch Introduction
• History of Elasticsearch
• 當時失業的作者 Shay Banon ,於 2004 年從以色列搬到倫敦。
• 原本只是為了學在藍帶學院學廚藝的妻子開發的食譜搜索引擎
• 他使用了以 Java 開發的 Lucene 搜索引擎函式庫延伸開發
• 當時叫做 Compass
• 2010年發布並開放原始碼 Apache 2 license。
• 不過到目前為止,他的妻子還在等待食譜搜索引擎
• https://youtu.be/fEsmydn747c
• https://www.youtube.com/watch?v=Kqs7UcCJquM
15
搜索引擎之比較
16
來源: http://db-engines.com/en/ranking/search+engine
參考 Solr vs ES : http://solr-vs-elasticsearch.com/
企業使用 Elasticsearch 的情況
17
參考: Stackshare
Elasticsearch 功能特色
• 建構在 Apache Lucene 搜索引擎函式庫上
• 資料儲存在 indices 中
• 分散式的即時 Real-time 資料分析及可擴展的搜索引擎 (Latency < 1s)
• 使用 Java 開發將 Lucene 複雜的功能進行包裝
• 預設便是分散式的叢集架構
• 支援 scale up & scale out、複製、容錯處理、負載平衡
• 遵循 Restful WebAPI 開發標準,統一使用 Json 格式進行資料
傳輸與交換
• 可使用任何的程式語言進行延伸的應用開發
• 所有的 indices 都是獨立的 Lucene index instances
18
Logstash Introduction
• 2009年由 Jordan Sissel 發布
• 於 2013年8月27日加入 Elastic
• Framework for managing logs
• Founded by Jordan Sissel
• JRuby
• Mainly consists of 3 components:
• input : passing logs to process them into machine understandable
format(file,lumberjack).
• filters : set of conditionals to perform specific action on a
event(grok,geoip).
• output : decision maker for processed event/log(elasticsearch,file)
19
Kibana Introduction
• 2011年12月11日由 Rashid Khan 發布的 PHP 版本
• 2012年8月19日發布由 Ruby 重寫的 Kibana 2 版本
• 2013年1月10日加入 Elastic
• 2014年2月發布 Angularjs 版本 Kibana 3
• 2015年3月發布 JRuby 及 Node.js 版本的 Kibana 4
• Powerful front-end dashboard for visualizing indexed
information from elastic cluster.
• Capable to providing historical data in form of
graphs,charts,etc.
• Enables real-time search of indexed information.
20
Summary
• ELK 是用來進行進行 Log 搜集、處理、儲存、搜尋及統計。
• 方便蒐集並建立索引 – Logstash Forwarder, Logstash
• Log 可集中化儲存 - Elasticsearch
• 可即時的查詢及分析 Log - Elasticsearch
• 統一的查詢篩選語法及介面 - Kibana
• 透過安裝外掛程式,可輕易地擷取與篩選 Log 內容
• Logstash Forwarder
• Beats
• 自動化示警通知
• 圖形化報表數位看板 - Kibana
21
認識 Apache Lucene
• 2000 年由 Doug Cutting 開發,Apache 2 license。
• Lucene 是一個非常成熟、效能優越、可擴展的、輕量的且具有
強大功能的搜索引擎函式庫。
• 只有一個 jar 檔,不依賴其他的套件。
• 可方便的建立索引、查詢索引資料等功能。
• 實作了大部分資訊檢索 (Information retrieval)
• Lucene 傳聞是以他的妻子的名字來命名
• 已被轉換為其他程式語言版本,如 C#, Python, etc.
22
Lucene 特性
• 最小記憶體需求 ~1 MB heap
• 支援批次及差異性索引建立
• 支援多種類型的查詢,term query, match query, etc.
• 提供了 Sort, Faceting, joins, grouping, suggesters.
• 可組態配置的 storage engine.
23
Indexing 流程
Content Parse
Stop
Word
Stem Lemma Token Scoring Index
24
Inverted Index in Lucene 關鍵概念
25
Posting Lists in Segment
26
Lucene 基本概念(1)
• Index – 儲存資料
• file or ram based
• write once ,read many segment
• append mode (no update and delete)
• Segment – 索引會被分成很多 Segment
• Document – 資料儲存於 Index 的通稱,或說是原始資料的載體。
• Field - Document 的一部份,最基本的有 name, value 屬性。
• Term – 原始內容裡的一個詞,搜尋的最小單位。
27
Segment & Merge
28
Lucene 基本概念(2)
• Token – Term 在某個 Field 的儲存格式,包含了
• Term 內容、
• Term 類型
• Term 在原始內容的起始及長度,
• 在文章內容的重要程度值(boost權重) (basic :TF / IDF)
• Term vector
• Add, update, Delete 的動作在未寫入磁碟之前,資料都存在記
憶體內,透過 Flush to disk (Commit) 寫入磁碟中。
• Delete 在未 (Optimized or segment merge) 前都還儲存在
index 中,且只是標記已刪除。
29
TF/IDF
• Term 於文章內容的重要程度值
• TF – Term frequency
• 以 Luhn algorithm 為基礎
• Term 在一篇文章中出現的次數
• IDF - Inverse Document Frequency
• 被用來更精確的計算 Term 的重要性程度
• 有多少 Document 包含了此 Term ?
30
Lucence Analyzer(1)
• 每個 Field 都需設定 Analyzer 與 Querying
• Analyzer :
• 包含了0 或多個 Tokenizers 及 Filters
• Tokenizer 負責把資料分析後,轉為很多 Token。
• Filter 負責處理如:大小寫轉換、Synonyms、language , etc.
• Querying :
• 通常與上面的 Analyzer 一致
• Syntax 包含 AND, OR(default) , NOT.
• query all or specific fields
• ?, * for wildcards
• ~ for fuzzy search
• ^ for boost value
•  Escape 跳脫字元
31
Lucence Analyzer(2)
32
Vector Space Model- relevancy scoring
• Documents 及 Queries 都會被轉為 vector space model
• 使用三角函數,COSINE() 來計算相似度.
33
Default Similarity Scoring Algorithm
34
Restful API 概念(1)
• API : application programming interface
• Representational State Transfer,簡稱 REST)
• 參考: https://ihower.tw/blog/archives/1542
• 使用 HTTP 協議既有的 POST、GET、PUT、DELETE Action。
(CRUD)
• Post : Create new document
• Get : Retrieve document
• put : Update document
• delete : Delete document
• API provider 與 API comsumer 通常使用 XML 或 Json 格式進
行資料交換
35
Restful API 概念(2)
• 範例:
36
Elasticsearch 的練習- 新增、查詢、修改、刪除 (CRUD)
• 工具 : Sense
• 參考: 03.Elasticsearch練習.txt
37
Elasticsearch APIs 介紹
• Create Index API
• CRUD 增、查、修、刪
• (C) Indexing API
• (R) Get index API
• (U) Update API
• (D) Delete API
• Exists API
• Multi Get API
• Bulk API
• Mapping API
• Search API
• Explain API
38
Create Index API
• Create 時若沒有特別設定,會使用預設值。
• 建議自行設定合適的 Shard, Replica, Analyzer。
• Mapping 可是之後再設定。
39
Create document API
• Indexing Documents into the Index
• Http status code
• 201 表示新建立
• 200 為更新或重新建立索引
• _id 可由系統自動產生或外部輸入
• Documents 可以設定生命週期 (TTL),系統會自動回收過期的 Index。
• Index 使用分散式儲存方式,切分多個 Shards。
• document indexed 後,回傳 _version 版本編號.
40
Get API
• 即時的對 Index 執行查詢
• Http Status code
• 200 for found
• 404 for not found
• 可針對特定欄位進行查詢,預設為對 _all 欄位查詢。
41
Update API
• 可指定更新某一個 document 的特定欄位
• 內部運作
• 先以 Get 取得該 document 內容
• 刪除該 _id 的 document
• 比對新舊內容,並合併內容.
• 執行 Index 建立索引
42
Delete API
• 刪除 Document
• Http status code
• 200 for delete
• 404 for not found
• 更新 Document 的 _version 版本編號
• 回傳更新後的 _version
43
Exists API
• 確認 Document 是否存在 Index?
• Http status code
• 200 for found
• 404 for not found
44
Multi Get API
• 可以在一個 API Request 取得多個 Documents
45
Bulk API
• 可以一次建立多個 Document 的 Index
• Response 時會依序回傳每個 Document 的執行結果.
46
Mapping API
• 建立 Index 的 mappings
• mapping 可在建立後被 update
• data types: string, byte, short, date, double, boolean,
integrate, long, float, ip address, lat/log, nested.
• 可使用 Dynamic 設定自動產生相對應的 mappings.
47
Search API
• Free text search
• 排序 Sorting 及分頁 Pagination
• 高亮顯示 Highlighting
• Aggregation ,Facet 等
48
Explain API
• 幫助你瞭解 Query 後的結果分析
49
Elasticsearch 基本架構回顧
50
擷取自:實戰Elasticsearch、Logstash、Kibana--分布式大數據搜索與日志挖掘及可視化解決方案
安裝 Elasticsearch (ES)
• Support Matrix: https://www.elastic.co/support/matrix
• 安裝的目標 :
• 單節點叢集
• 多節點叢集
• 開始安裝 :
• 參考: 01.初始化系統.txt, 02.安裝及設定Elasticsearch.txt
• 安裝 JVM
• 下載 Elasticsearch 安裝包
• 官網下載 : https://www.elastic.co/downloads/elasticsearch
• apt or yum :
https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-
repositories.html
• http://127.0.0.1:9200
51
Elasticsearch 常用系統管理套件
• 安裝指令:
• Local file: bin/plugin install file:///path/to/plugin.zip
• Head - http://mobz.github.io/elasticsearch-head/
• Kof - http://blog.florian-hopf.de/2014/06/elasticsearch-kopf.html
• bigdesk - https://github.com/lukas-vlcek/bigdes
• Sql - https://github.com/NLPchina/elasticsearch-sql
• HQ - http://www.elastichq.org/index.html
52
Elasticsearch 官方套件
• Marvel – 是一個 Elasticsearch 的管理和監控工具
• https://www.elastic.co/guide/en/marvel/current/introduction.html
• 安裝步驟:如下一張 silde
• Marvel agent – install on each Elasticsearch Node
• Marvel application – only need to install as an app of Kibana
• Sense - REST API of Elasticsearch, 被移植到 Marvel ,Marvel
1.X 版本內建這個工具。Marvel2.X 版本,sense 從 Marvel 抽離出來
了,整合到 kibana 平台上了,作為 kibana 的外掛套件 app。
53
Marvel 套件 online 安裝
• 安裝 License file
/usr/share/elasticsearch/bin/plugin install license
• 於每一台 Elasticsearch 安裝 marvel-agent
/usr/share/elasticsearch/bin/plugin install marvel-agent
• 安裝 Kibana 的 Marvel 套件
• 必須先安裝 Kibana (參考: 03.Elasticsearch練習.txt)
• /opt/kibana/bin/kibana plugin --install elasticsearch/marvel/2.3.4
• Restart Kibana
service kibana restart or systemcrl restart kibana
• http://127.0.0.1:5601/app/marvel
54
Marvel 套件 offline 安裝
• https://www.elastic.co/guide/en/marvel/current/installing-
marvel.html#offline-installation
• 安裝 License file
bin/plugin install file:///path/to/file/license-2.3.4.zip
• 於每一台 Elasticsearch 安裝 marvel-agent
bin/plugin install file:///path/to/file/marvel-agent-2.3.4.zip
• 安裝 Kibana 的 Marvel 套件
• 必須先安裝 Kibana (參考: 03.Elasticsearch練習.txt)
• bin/kibana plugin --install marvel --url file:///path/to/file/marvel-
2.3.4.tar.gz
• Restart Kibana
service kibana restart or systemcrl restart kibana
• http://127.0.0.1:5601/app/marvel
55
Elasticsearch 目錄介紹
56
• rpm –gl elasticsearch , /usr/share/elasticsearch
目錄名稱 備註
/bin Elasticsearch 主程式及外掛套件的script
/config elasticsearch.yml 組態設定檔
/data
index 儲存位置,
可透過設定修改為多個目錄分散儲存之
/lib Elasticsearch 程式會參考依賴的函式庫檔案
/logs Elasticseaech Log 檔案儲存的位置
/plugins 外掛程式儲存的位置
Elasticsearch 重要名詞列表
57
Relational Database Elasticsearch
Database Index
Table Type
Row (Tuple) Document
Column Field
Schema Mapping
Partition Shard
SQL Query DSL (domain specific language)
Replica
Instance Node
Cluster Cluster
Elasticsearch 與 Lucene
• Provided by Lucene
• Document analysis
• Indexing
• Query
• Results
• Provided by Elasticsearch
• Distribution
• Restful API
• Administration
• Wrappers to Indexing and querying
• Plugins
58
Data models of Elasticsearch
• Data is stored as JSON format
• string, number, date, byte, lat-long etc.
• schema free (static or dynamic)
• Fields can be indexed, stored or analyzed.
• Internal meta fields:
• _id, _type, _source, _version, etc.
• Settings and mappings 可以依照需求而設定
59
Elasticsearch 名詞- Cluster
• Elasticsearch 叢集由一個或多個節點 nodes 組成。
• 所有的節點都可用來存儲資料並提供查詢。
• 為我們提供跨節點查詢的能力。
• Elasticsearch 叢集的名稱是唯一的,預設為 “elasticsearch”。
60
引用:https://www.youtube.com/watch?v=LDyxijDEqj4
Elasticsearch 名詞- Node
• Node - 是一個 Elasticsearch cluster 中的一台 server。
• 用來儲存資料,提供給叢集的索引及查詢能力。
• 預設會自動加入同樣名稱的叢集內。
61
引用:https://www.youtube.com/watch?v=LDyxijDEqj4
Elasticsearch 名詞- Index
• Index - 為 Elasticsearch 儲存資料的地方,相當於 RDBMS 的
Database。
• 通常會把相同特性的資料儲存在同一個索引名稱中。
62
引用:https://www.youtube.com/watch?v=LDyxijDEqj4
Elasticsearch 名詞- Type, Document
• Type - 就如 Table ,一個 Index 可以是多個 Type 組成。
• Document – 儲存資料的最小單位,需要有 Unique Id,由
Elasticsearch API 取出時為 Json 格式。
63
引用:http://insightdataengineering.com/blog/elasticsearch-crud/
Elasticsearch 名詞- Fields
64
屬性s 說明 資料型態
Field name 定義欄位的名稱;預設值是欄位本身的名字 all
type 定義欄位的資料型態,參考下一張簡報
store Yes , no => yes 表示儲存原始資料於 index 內,no 是不儲存,預設 no all
index
Analyzed, not_analyzed , no => 預設值是analyzed
• analyzed 索引且分析來源資料為 terms
• not_analyzed 索引但是不分析
• no 不提供索引,也就是無法針對此欄位查詢資料
來源為文字字串 string
其他類型只能為
no 或 not_analyzed
null_value 如果欄位為空值時,可設定預設值,比如 "null_value" : ”nil" all
boost 欄位權重,預設為 1.0 all
index_analyzer 建立索引時用的 analyzer all
search_analyzer 查詢索引時用的 analyzer all
analyzer
設定索引和查詢時用的 analyzer,Elasticsearch 預設使用 standard analyzer
內建的還有如: whitespace, simple, english analyzer
all
include_in_all
true, false => 預設值是true
預設 elasticsearch 會為每個欄位的值建立索引,並儲存在 _all 欄位中,這樣每個欄位都可以被查詢到,你可
以關閉它 include_in_all = false
all
norms
Norms 在 indexing tisme 時去計算開欄位的重要性,有助於查詢結果的 Ranking 排序。
在 index 屬性設定為 analyzed 時,此預設值為 true, not_analyzed 時為 false
all
Elasticsearch 名詞- Fields datatype 資料型態
65
Elasticsearch 名詞- Mapping
• 靜態設定 – 預先設定資料的 Fields 的相關屬性(建議)
• 動態設定 – 讓 Elasticsearch 自行決定 Field 的資料型態與屬性
66
引用:https://www.elastic.co/guide/en/elasticsearch/reference/current/string.html
Elasticsearch 名詞- Shard, Replica
• Shard – 將索引進行切片,可提高查詢效能及擴充索引的容量。
• 單一 shard 最大可含 2,147,483,519 個 documents
• Replica – 複製 Shard 到其他 Node 做備援查詢,
• 有助於提升高可用度。
• Shard 的 replica 不會在同一個 Node
• 預設是 5 個 Shards及 1 份 Replica
67
Elasticsearch 概念回顧
• 是一個基於 Lucene 上,加值開發的應用平台,具有:
• 高可用性
• 可擴展性
• 即時資料查詢(latancy < 1s)
• 提供了 Restful API 讓我們能夠簡單的做二次開發或管理。
68
Shard 與 Replica 的建議
• Shard 的數量,需考量 cluster 的規模及資料量的大小。
• 盡量讓每個 Node 上至少負載一個 Shard,每個 Shard 不要超
過 10 GB 的資料大小,Shard 的數量取大於(總資料量/10GB)的
最小質數。
• 如: ES cluster 預計有 10 個 Node, 總資料量約 90 GB。
• Shard 的數量 = 90GB / 10GB = 9 shards,
• 此時因為你共有 10 個 Nodes, 所以至少切 10 Shards,不然會有一台
Node 沒有分配到 shard 而空閒著。
• 再考量到最小質數的建議,所以此情況下最好切分 "11" 個 Shards。
• 每個 Shards 的 Replica 數量使用預設值即可(1 master + 2 replica)。
69

Weitere ähnliche Inhalte

Was ist angesagt?

elastic search分析与实践
elastic search分析与实践elastic search分析与实践
elastic search分析与实践williams2014
 
Spark sql培训
Spark sql培训Spark sql培训
Spark sql培训Jiang Yu
 
搜索技术分享
搜索技术分享搜索技术分享
搜索技术分享endless_yy
 
Elastic Stack 最新动态
Elastic Stack 最新动态Elastic Stack 最新动态
Elastic Stack 最新动态Elasticsearch
 
CH04:認識物件
CH04:認識物件CH04:認識物件
CH04:認識物件Justin Lin
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTLJustin Lin
 
山頂洞人日記 - 回歸到最純樸的開發
山頂洞人日記 -  回歸到最純樸的開發山頂洞人日記 -  回歸到最純樸的開發
山頂洞人日記 - 回歸到最純樸的開發koji lin
 
CH16:整合資料庫
CH16:整合資料庫CH16:整合資料庫
CH16:整合資料庫Justin Lin
 
CH09:Collection與Map
CH09:Collection與MapCH09:Collection與Map
CH09:Collection與MapJustin Lin
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon databoxu42
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
 
The practice of enjoying apache
The practice of enjoying apacheThe practice of enjoying apache
The practice of enjoying apachejixuan1989
 
Introduction to big data
Introduction to big dataIntroduction to big data
Introduction to big data邦宇 叶
 
2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform Security2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform SecurityJazz Yao-Tsung Wang
 
From Java Stream to Java DataFrame
From Java Stream to Java DataFrameFrom Java Stream to Java DataFrame
From Java Stream to Java DataFrameChen-en Lu
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用Lorex L. Yang
 
Partner Session - Alibaba
Partner Session - Alibaba Partner Session - Alibaba
Partner Session - Alibaba Elasticsearch
 
北護大/FHIR 開發簡介與應用
北護大/FHIR 開發簡介與應用北護大/FHIR 開發簡介與應用
北護大/FHIR 開發簡介與應用Lorex L. Yang
 

Was ist angesagt? (20)

elastic search分析与实践
elastic search分析与实践elastic search分析与实践
elastic search分析与实践
 
Spark sql培训
Spark sql培训Spark sql培训
Spark sql培训
 
搜索技术分享
搜索技术分享搜索技术分享
搜索技术分享
 
Elastic Stack 最新动态
Elastic Stack 最新动态Elastic Stack 最新动态
Elastic Stack 最新动态
 
CH04:認識物件
CH04:認識物件CH04:認識物件
CH04:認識物件
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 
山頂洞人日記 - 回歸到最純樸的開發
山頂洞人日記 -  回歸到最純樸的開發山頂洞人日記 -  回歸到最純樸的開發
山頂洞人日記 - 回歸到最純樸的開發
 
CH16:整合資料庫
CH16:整合資料庫CH16:整合資料庫
CH16:整合資料庫
 
Spark tutorial
Spark tutorialSpark tutorial
Spark tutorial
 
CH09:Collection與Map
CH09:Collection與MapCH09:Collection與Map
CH09:Collection與Map
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon data
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
SMACK Dev Experience
SMACK Dev ExperienceSMACK Dev Experience
SMACK Dev Experience
 
The practice of enjoying apache
The practice of enjoying apacheThe practice of enjoying apache
The practice of enjoying apache
 
Introduction to big data
Introduction to big dataIntroduction to big data
Introduction to big data
 
2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform Security2016-07-12 Introduction to Big Data Platform Security
2016-07-12 Introduction to Big Data Platform Security
 
From Java Stream to Java DataFrame
From Java Stream to Java DataFrameFrom Java Stream to Java DataFrame
From Java Stream to Java DataFrame
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用
 
Partner Session - Alibaba
Partner Session - Alibaba Partner Session - Alibaba
Partner Session - Alibaba
 
北護大/FHIR 開發簡介與應用
北護大/FHIR 開發簡介與應用北護大/FHIR 開發簡介與應用
北護大/FHIR 開發簡介與應用
 

Ähnlich wie Elastic stack day-1

Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AIKo Ko
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open CampAndrew Wu
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CDChen-Tien Tsai
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1medcl
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略Will Huang
 
網站上線了,然後呢?
網站上線了,然後呢?網站上線了,然後呢?
網站上線了,然後呢?Kirk Chen
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeAngel Boy
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式Justin Lin
 
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4   app - oss - db (ver 1.0)開放原始碼 Ch2.4   app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)My own sweet home!
 
scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎Ping Yin
 
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...Etu Solution
 
⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨Wen-Tien Chang
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7Justin Lin
 
Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发topgeek
 
Azure Data Lake 簡介
Azure Data Lake 簡介Azure Data Lake 簡介
Azure Data Lake 簡介Herman Wu
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7twMVC
 
DevOps Monitoring Tools 大亂鬥 - Azure Log Analytics 使用經驗分享
DevOps Monitoring Tools 大亂鬥 - Azure Log Analytics 使用經驗分享DevOps Monitoring Tools 大亂鬥 - Azure Log Analytics 使用經驗分享
DevOps Monitoring Tools 大亂鬥 - Azure Log Analytics 使用經驗分享Robert Hu
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lakeJames Chen
 
Kubernetes project update and how to contribute
Kubernetes project update and how to contributeKubernetes project update and how to contribute
Kubernetes project update and how to contributeinwin stack
 

Ähnlich wie Elastic stack day-1 (20)

Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AI
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
網站上線了,然後呢?
網站上線了,然後呢?網站上線了,然後呢?
網站上線了,然後呢?
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
 
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4   app - oss - db (ver 1.0)開放原始碼 Ch2.4   app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
 
scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎
 
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
 
⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
 
Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发
 
Azure Data Lake 簡介
Azure Data Lake 簡介Azure Data Lake 簡介
Azure Data Lake 簡介
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
 
DevOps Monitoring Tools 大亂鬥 - Azure Log Analytics 使用經驗分享
DevOps Monitoring Tools 大亂鬥 - Azure Log Analytics 使用經驗分享DevOps Monitoring Tools 大亂鬥 - Azure Log Analytics 使用經驗分享
DevOps Monitoring Tools 大亂鬥 - Azure Log Analytics 使用經驗分享
 
Hadoop con 2015 hadoop enables enterprise data lake
Hadoop con 2015   hadoop enables enterprise data lakeHadoop con 2015   hadoop enables enterprise data lake
Hadoop con 2015 hadoop enables enterprise data lake
 
Kubernetes project update and how to contribute
Kubernetes project update and how to contributeKubernetes project update and how to contribute
Kubernetes project update and how to contribute
 
20130339广州
20130339广州20130339广州
20130339广州
 

Elastic stack day-1

  • 1. Elastic Stack Log Analysis – Day 1 講師:吳奕慶
  • 2. About me – 吳奕慶 • 目前任職趨勢科技股份有限公司 • 核心研發部門技術經理,團隊技術的前導者。 • 系統架構設計及開發 13 年以上經驗 • 連續 6 屆微軟全球最有價值專家 MVP (2004~2010年) • 超過 6 年的 Solr 搜索引擎的開發應用經驗 • 專注於搜索引擎 (Solr, Elasticsearch) 的研究,並樂於分享技術。 • Interested in programming, investigate technology • Slideshare : http://goo.gl/cUizu5 2
  • 3. 課程目標 • 讓參訓之學員能夠瞭解正確的觀念與方法及工具的應用 • 學習如何將大數據(Big Data) 進行視覺化分析之能力 • 利用 ELK Stack 套件來操作及應用數以千萬計的資料, • 期能夠在短時間內快速建構出高效能的資料視覺化分析的執行環 境和服務 • 將以實作方式讓學員了解如何透過 ELK 三大套件架構進行大數據 資料處理、分析與產出視覺化的報表。 3
  • 4. 課程大綱 • ELK 功能剖析 • Elasticsearch 簡介 • Logstash 簡介 • Kibana 簡介 • Elasticsearch 深度學習 • 搜索引擎概念解說 • Elasticsearch 原理介紹 • Elasticsearch 叢集配置及安裝 • Elasticsearch 相關外掛套件介紹 • Elasticsearch 新增、刪除、修改操作 • Elasticsearch 基本、篩選及組合查詢 • 認識 Apache Lucene • Logstash 魅力探索 • Logstash 原理介紹 • Logstash 安裝及配置 • Logstash 外掛套件介紹與安裝 • Logstash input 資料來源輸入 • Logstash codec 編碼與解碼器應用解說 • Logstash filter 資料篩選配置 • Logstash output 輸出配置 • Kibana 視覺報表 • Kibana 安裝及配置 • Kibana 基本功能 • Kibana 常用圖表介紹 • 利用 Kibana 建立圖形化報表 4
  • 5. 課程參考文件 • GitHub: • https://github.com/dozerwu/elastic-stack-material • Git Sample: • git clone git@github.com:dozerwu/elastic-stack-material.git 5
  • 6. What is log ? • Log 資料紀錄,可以是任何結構化或非結構化的資料: • 非結構化 - 一篇 Blog 文章,一個 Word 或 PDF 檔,甚至 Twitter 的 Tweets。 • 結構化 - 系統的 access log,application log,財務交易資料,IOT log ,資料庫內的資料等等。 • Tomcat • Apache server access log • IIS log 6
  • 7. 處理 Log 時,遇到甚麼問題?-(1) • 如何解決此問題? 7 來源 : http://goo.gl/RaxXGE
  • 8. 處理 Log 時,遇到甚麼問題?-(2) • 不同的 Log 格式 • CPU , disk , network usage • Syslog, Windows logs, Application logs • Apache, Nginx, IIS, MySQL, MS SQL, Oracle, etc. • ERP, CRM, E-Commerce, etc. • Networking, Firewall logs • Social networking, User access logs • word, pdf, csv, html web page, etc. 8
  • 9. 處理 Log 時,遇到甚麼問題?-(3) • 不同的日期格式 • 142920788 • Oct. 12 23:21:45 • [5/May/2016:08:09:10 +0000] • Tue 01-01-2016 6:00 • 2016-08-01 T 05:45 UTC • Sat Jul 23 02:16:57 2016 • 08:21, 06 August 2016(UTC) 9
  • 10. 處理 Log 時,遇到甚麼問題?-(4) • Log 散佈在各伺服器上,非集中管理。 • 日誌紀錄檔分布各處 • 需登入每台伺服器處理 • IT 維運人員需使用各種指令及工具來蒐集 • Linux syslog - tail / grep / sed / awk /sort /cut • Windows system - admin GUI console / powershell script /vbscript • Hadoop / Spark log tools • Database - Oracle / Mysql /MS SQL / MongoDB Tools • Application Server - IIS Log / Apache log /Nginx Tools 10
  • 11. 處理 Log 時,遇到甚麼問題?-(5) • 蒐集後的資料怎麼應用 ? • 報表分析: • 使用者的瀏覽器版本統計 • 同一使用者看了哪幾項產品或網頁 • 每個月銷售前 10 名產品,也看了哪些產品? • 協助分析潛在的行銷標的 • 支援業務面大量數據分析 • 警示: 提前發現系統問題 • CPU, Memory, I/O Disk, Networking 負載 • 系統發生 404 及 503 錯誤次數及時間 11
  • 12. 曙光 - ELK Stack 的現身 • 由 Elasticsearch, Logstash, Kibana 三個開放原始碼工具所組成 • ELK 為這三個工具的英文名的第一個字母合併後稱之。 • 經常互相搭配在即時的大量資料查詢及分析情境下使用。 • 目前由 Elastic 公司所維護 • 近期 ELK Stack 已被正名為 Elastic Stack 12
  • 15. Elasticsearch Introduction • History of Elasticsearch • 當時失業的作者 Shay Banon ,於 2004 年從以色列搬到倫敦。 • 原本只是為了學在藍帶學院學廚藝的妻子開發的食譜搜索引擎 • 他使用了以 Java 開發的 Lucene 搜索引擎函式庫延伸開發 • 當時叫做 Compass • 2010年發布並開放原始碼 Apache 2 license。 • 不過到目前為止,他的妻子還在等待食譜搜索引擎 • https://youtu.be/fEsmydn747c • https://www.youtube.com/watch?v=Kqs7UcCJquM 15
  • 18. Elasticsearch 功能特色 • 建構在 Apache Lucene 搜索引擎函式庫上 • 資料儲存在 indices 中 • 分散式的即時 Real-time 資料分析及可擴展的搜索引擎 (Latency < 1s) • 使用 Java 開發將 Lucene 複雜的功能進行包裝 • 預設便是分散式的叢集架構 • 支援 scale up & scale out、複製、容錯處理、負載平衡 • 遵循 Restful WebAPI 開發標準,統一使用 Json 格式進行資料 傳輸與交換 • 可使用任何的程式語言進行延伸的應用開發 • 所有的 indices 都是獨立的 Lucene index instances 18
  • 19. Logstash Introduction • 2009年由 Jordan Sissel 發布 • 於 2013年8月27日加入 Elastic • Framework for managing logs • Founded by Jordan Sissel • JRuby • Mainly consists of 3 components: • input : passing logs to process them into machine understandable format(file,lumberjack). • filters : set of conditionals to perform specific action on a event(grok,geoip). • output : decision maker for processed event/log(elasticsearch,file) 19
  • 20. Kibana Introduction • 2011年12月11日由 Rashid Khan 發布的 PHP 版本 • 2012年8月19日發布由 Ruby 重寫的 Kibana 2 版本 • 2013年1月10日加入 Elastic • 2014年2月發布 Angularjs 版本 Kibana 3 • 2015年3月發布 JRuby 及 Node.js 版本的 Kibana 4 • Powerful front-end dashboard for visualizing indexed information from elastic cluster. • Capable to providing historical data in form of graphs,charts,etc. • Enables real-time search of indexed information. 20
  • 21. Summary • ELK 是用來進行進行 Log 搜集、處理、儲存、搜尋及統計。 • 方便蒐集並建立索引 – Logstash Forwarder, Logstash • Log 可集中化儲存 - Elasticsearch • 可即時的查詢及分析 Log - Elasticsearch • 統一的查詢篩選語法及介面 - Kibana • 透過安裝外掛程式,可輕易地擷取與篩選 Log 內容 • Logstash Forwarder • Beats • 自動化示警通知 • 圖形化報表數位看板 - Kibana 21
  • 22. 認識 Apache Lucene • 2000 年由 Doug Cutting 開發,Apache 2 license。 • Lucene 是一個非常成熟、效能優越、可擴展的、輕量的且具有 強大功能的搜索引擎函式庫。 • 只有一個 jar 檔,不依賴其他的套件。 • 可方便的建立索引、查詢索引資料等功能。 • 實作了大部分資訊檢索 (Information retrieval) • Lucene 傳聞是以他的妻子的名字來命名 • 已被轉換為其他程式語言版本,如 C#, Python, etc. 22
  • 23. Lucene 特性 • 最小記憶體需求 ~1 MB heap • 支援批次及差異性索引建立 • 支援多種類型的查詢,term query, match query, etc. • 提供了 Sort, Faceting, joins, grouping, suggesters. • 可組態配置的 storage engine. 23
  • 24. Indexing 流程 Content Parse Stop Word Stem Lemma Token Scoring Index 24
  • 25. Inverted Index in Lucene 關鍵概念 25
  • 26. Posting Lists in Segment 26
  • 27. Lucene 基本概念(1) • Index – 儲存資料 • file or ram based • write once ,read many segment • append mode (no update and delete) • Segment – 索引會被分成很多 Segment • Document – 資料儲存於 Index 的通稱,或說是原始資料的載體。 • Field - Document 的一部份,最基本的有 name, value 屬性。 • Term – 原始內容裡的一個詞,搜尋的最小單位。 27
  • 29. Lucene 基本概念(2) • Token – Term 在某個 Field 的儲存格式,包含了 • Term 內容、 • Term 類型 • Term 在原始內容的起始及長度, • 在文章內容的重要程度值(boost權重) (basic :TF / IDF) • Term vector • Add, update, Delete 的動作在未寫入磁碟之前,資料都存在記 憶體內,透過 Flush to disk (Commit) 寫入磁碟中。 • Delete 在未 (Optimized or segment merge) 前都還儲存在 index 中,且只是標記已刪除。 29
  • 30. TF/IDF • Term 於文章內容的重要程度值 • TF – Term frequency • 以 Luhn algorithm 為基礎 • Term 在一篇文章中出現的次數 • IDF - Inverse Document Frequency • 被用來更精確的計算 Term 的重要性程度 • 有多少 Document 包含了此 Term ? 30
  • 31. Lucence Analyzer(1) • 每個 Field 都需設定 Analyzer 與 Querying • Analyzer : • 包含了0 或多個 Tokenizers 及 Filters • Tokenizer 負責把資料分析後,轉為很多 Token。 • Filter 負責處理如:大小寫轉換、Synonyms、language , etc. • Querying : • 通常與上面的 Analyzer 一致 • Syntax 包含 AND, OR(default) , NOT. • query all or specific fields • ?, * for wildcards • ~ for fuzzy search • ^ for boost value • Escape 跳脫字元 31
  • 33. Vector Space Model- relevancy scoring • Documents 及 Queries 都會被轉為 vector space model • 使用三角函數,COSINE() 來計算相似度. 33
  • 35. Restful API 概念(1) • API : application programming interface • Representational State Transfer,簡稱 REST) • 參考: https://ihower.tw/blog/archives/1542 • 使用 HTTP 協議既有的 POST、GET、PUT、DELETE Action。 (CRUD) • Post : Create new document • Get : Retrieve document • put : Update document • delete : Delete document • API provider 與 API comsumer 通常使用 XML 或 Json 格式進 行資料交換 35
  • 37. Elasticsearch 的練習- 新增、查詢、修改、刪除 (CRUD) • 工具 : Sense • 參考: 03.Elasticsearch練習.txt 37
  • 38. Elasticsearch APIs 介紹 • Create Index API • CRUD 增、查、修、刪 • (C) Indexing API • (R) Get index API • (U) Update API • (D) Delete API • Exists API • Multi Get API • Bulk API • Mapping API • Search API • Explain API 38
  • 39. Create Index API • Create 時若沒有特別設定,會使用預設值。 • 建議自行設定合適的 Shard, Replica, Analyzer。 • Mapping 可是之後再設定。 39
  • 40. Create document API • Indexing Documents into the Index • Http status code • 201 表示新建立 • 200 為更新或重新建立索引 • _id 可由系統自動產生或外部輸入 • Documents 可以設定生命週期 (TTL),系統會自動回收過期的 Index。 • Index 使用分散式儲存方式,切分多個 Shards。 • document indexed 後,回傳 _version 版本編號. 40
  • 41. Get API • 即時的對 Index 執行查詢 • Http Status code • 200 for found • 404 for not found • 可針對特定欄位進行查詢,預設為對 _all 欄位查詢。 41
  • 42. Update API • 可指定更新某一個 document 的特定欄位 • 內部運作 • 先以 Get 取得該 document 內容 • 刪除該 _id 的 document • 比對新舊內容,並合併內容. • 執行 Index 建立索引 42
  • 43. Delete API • 刪除 Document • Http status code • 200 for delete • 404 for not found • 更新 Document 的 _version 版本編號 • 回傳更新後的 _version 43
  • 44. Exists API • 確認 Document 是否存在 Index? • Http status code • 200 for found • 404 for not found 44
  • 45. Multi Get API • 可以在一個 API Request 取得多個 Documents 45
  • 46. Bulk API • 可以一次建立多個 Document 的 Index • Response 時會依序回傳每個 Document 的執行結果. 46
  • 47. Mapping API • 建立 Index 的 mappings • mapping 可在建立後被 update • data types: string, byte, short, date, double, boolean, integrate, long, float, ip address, lat/log, nested. • 可使用 Dynamic 設定自動產生相對應的 mappings. 47
  • 48. Search API • Free text search • 排序 Sorting 及分頁 Pagination • 高亮顯示 Highlighting • Aggregation ,Facet 等 48
  • 49. Explain API • 幫助你瞭解 Query 後的結果分析 49
  • 51. 安裝 Elasticsearch (ES) • Support Matrix: https://www.elastic.co/support/matrix • 安裝的目標 : • 單節點叢集 • 多節點叢集 • 開始安裝 : • 參考: 01.初始化系統.txt, 02.安裝及設定Elasticsearch.txt • 安裝 JVM • 下載 Elasticsearch 安裝包 • 官網下載 : https://www.elastic.co/downloads/elasticsearch • apt or yum : https://www.elastic.co/guide/en/elasticsearch/reference/current/setup- repositories.html • http://127.0.0.1:9200 51
  • 52. Elasticsearch 常用系統管理套件 • 安裝指令: • Local file: bin/plugin install file:///path/to/plugin.zip • Head - http://mobz.github.io/elasticsearch-head/ • Kof - http://blog.florian-hopf.de/2014/06/elasticsearch-kopf.html • bigdesk - https://github.com/lukas-vlcek/bigdes • Sql - https://github.com/NLPchina/elasticsearch-sql • HQ - http://www.elastichq.org/index.html 52
  • 53. Elasticsearch 官方套件 • Marvel – 是一個 Elasticsearch 的管理和監控工具 • https://www.elastic.co/guide/en/marvel/current/introduction.html • 安裝步驟:如下一張 silde • Marvel agent – install on each Elasticsearch Node • Marvel application – only need to install as an app of Kibana • Sense - REST API of Elasticsearch, 被移植到 Marvel ,Marvel 1.X 版本內建這個工具。Marvel2.X 版本,sense 從 Marvel 抽離出來 了,整合到 kibana 平台上了,作為 kibana 的外掛套件 app。 53
  • 54. Marvel 套件 online 安裝 • 安裝 License file /usr/share/elasticsearch/bin/plugin install license • 於每一台 Elasticsearch 安裝 marvel-agent /usr/share/elasticsearch/bin/plugin install marvel-agent • 安裝 Kibana 的 Marvel 套件 • 必須先安裝 Kibana (參考: 03.Elasticsearch練習.txt) • /opt/kibana/bin/kibana plugin --install elasticsearch/marvel/2.3.4 • Restart Kibana service kibana restart or systemcrl restart kibana • http://127.0.0.1:5601/app/marvel 54
  • 55. Marvel 套件 offline 安裝 • https://www.elastic.co/guide/en/marvel/current/installing- marvel.html#offline-installation • 安裝 License file bin/plugin install file:///path/to/file/license-2.3.4.zip • 於每一台 Elasticsearch 安裝 marvel-agent bin/plugin install file:///path/to/file/marvel-agent-2.3.4.zip • 安裝 Kibana 的 Marvel 套件 • 必須先安裝 Kibana (參考: 03.Elasticsearch練習.txt) • bin/kibana plugin --install marvel --url file:///path/to/file/marvel- 2.3.4.tar.gz • Restart Kibana service kibana restart or systemcrl restart kibana • http://127.0.0.1:5601/app/marvel 55
  • 56. Elasticsearch 目錄介紹 56 • rpm –gl elasticsearch , /usr/share/elasticsearch 目錄名稱 備註 /bin Elasticsearch 主程式及外掛套件的script /config elasticsearch.yml 組態設定檔 /data index 儲存位置, 可透過設定修改為多個目錄分散儲存之 /lib Elasticsearch 程式會參考依賴的函式庫檔案 /logs Elasticseaech Log 檔案儲存的位置 /plugins 外掛程式儲存的位置
  • 57. Elasticsearch 重要名詞列表 57 Relational Database Elasticsearch Database Index Table Type Row (Tuple) Document Column Field Schema Mapping Partition Shard SQL Query DSL (domain specific language) Replica Instance Node Cluster Cluster
  • 58. Elasticsearch 與 Lucene • Provided by Lucene • Document analysis • Indexing • Query • Results • Provided by Elasticsearch • Distribution • Restful API • Administration • Wrappers to Indexing and querying • Plugins 58
  • 59. Data models of Elasticsearch • Data is stored as JSON format • string, number, date, byte, lat-long etc. • schema free (static or dynamic) • Fields can be indexed, stored or analyzed. • Internal meta fields: • _id, _type, _source, _version, etc. • Settings and mappings 可以依照需求而設定 59
  • 60. Elasticsearch 名詞- Cluster • Elasticsearch 叢集由一個或多個節點 nodes 組成。 • 所有的節點都可用來存儲資料並提供查詢。 • 為我們提供跨節點查詢的能力。 • Elasticsearch 叢集的名稱是唯一的,預設為 “elasticsearch”。 60 引用:https://www.youtube.com/watch?v=LDyxijDEqj4
  • 61. Elasticsearch 名詞- Node • Node - 是一個 Elasticsearch cluster 中的一台 server。 • 用來儲存資料,提供給叢集的索引及查詢能力。 • 預設會自動加入同樣名稱的叢集內。 61 引用:https://www.youtube.com/watch?v=LDyxijDEqj4
  • 62. Elasticsearch 名詞- Index • Index - 為 Elasticsearch 儲存資料的地方,相當於 RDBMS 的 Database。 • 通常會把相同特性的資料儲存在同一個索引名稱中。 62 引用:https://www.youtube.com/watch?v=LDyxijDEqj4
  • 63. Elasticsearch 名詞- Type, Document • Type - 就如 Table ,一個 Index 可以是多個 Type 組成。 • Document – 儲存資料的最小單位,需要有 Unique Id,由 Elasticsearch API 取出時為 Json 格式。 63 引用:http://insightdataengineering.com/blog/elasticsearch-crud/
  • 64. Elasticsearch 名詞- Fields 64 屬性s 說明 資料型態 Field name 定義欄位的名稱;預設值是欄位本身的名字 all type 定義欄位的資料型態,參考下一張簡報 store Yes , no => yes 表示儲存原始資料於 index 內,no 是不儲存,預設 no all index Analyzed, not_analyzed , no => 預設值是analyzed • analyzed 索引且分析來源資料為 terms • not_analyzed 索引但是不分析 • no 不提供索引,也就是無法針對此欄位查詢資料 來源為文字字串 string 其他類型只能為 no 或 not_analyzed null_value 如果欄位為空值時,可設定預設值,比如 "null_value" : ”nil" all boost 欄位權重,預設為 1.0 all index_analyzer 建立索引時用的 analyzer all search_analyzer 查詢索引時用的 analyzer all analyzer 設定索引和查詢時用的 analyzer,Elasticsearch 預設使用 standard analyzer 內建的還有如: whitespace, simple, english analyzer all include_in_all true, false => 預設值是true 預設 elasticsearch 會為每個欄位的值建立索引,並儲存在 _all 欄位中,這樣每個欄位都可以被查詢到,你可 以關閉它 include_in_all = false all norms Norms 在 indexing tisme 時去計算開欄位的重要性,有助於查詢結果的 Ranking 排序。 在 index 屬性設定為 analyzed 時,此預設值為 true, not_analyzed 時為 false all
  • 65. Elasticsearch 名詞- Fields datatype 資料型態 65
  • 66. Elasticsearch 名詞- Mapping • 靜態設定 – 預先設定資料的 Fields 的相關屬性(建議) • 動態設定 – 讓 Elasticsearch 自行決定 Field 的資料型態與屬性 66 引用:https://www.elastic.co/guide/en/elasticsearch/reference/current/string.html
  • 67. Elasticsearch 名詞- Shard, Replica • Shard – 將索引進行切片,可提高查詢效能及擴充索引的容量。 • 單一 shard 最大可含 2,147,483,519 個 documents • Replica – 複製 Shard 到其他 Node 做備援查詢, • 有助於提升高可用度。 • Shard 的 replica 不會在同一個 Node • 預設是 5 個 Shards及 1 份 Replica 67
  • 68. Elasticsearch 概念回顧 • 是一個基於 Lucene 上,加值開發的應用平台,具有: • 高可用性 • 可擴展性 • 即時資料查詢(latancy < 1s) • 提供了 Restful API 讓我們能夠簡單的做二次開發或管理。 68
  • 69. Shard 與 Replica 的建議 • Shard 的數量,需考量 cluster 的規模及資料量的大小。 • 盡量讓每個 Node 上至少負載一個 Shard,每個 Shard 不要超 過 10 GB 的資料大小,Shard 的數量取大於(總資料量/10GB)的 最小質數。 • 如: ES cluster 預計有 10 個 Node, 總資料量約 90 GB。 • Shard 的數量 = 90GB / 10GB = 9 shards, • 此時因為你共有 10 個 Nodes, 所以至少切 10 Shards,不然會有一台 Node 沒有分配到 shard 而空閒著。 • 再考量到最小質數的建議,所以此情況下最好切分 "11" 個 Shards。 • 每個 Shards 的 Replica 數量使用預設值即可(1 master + 2 replica)。 69