目錄
-
ElasticStack及Elasticsearch介紹
-
Elasticsearch安裝
-
Elasticsearch入門
-
Elasticsearch配置
-
Elasticsearch REST API
-
Elasticsearch .NET客戶端
-
附錄
ElasticStack及Elasticsearch介紹
Elastic Stack (舊稱ELK Stack): Elasticsearch + Logstash + Kibana + Beats (New)
Elastic Stack元件:
-
Elasticsearch
搜尋、分析和儲存資料。Elasticsearch是一個基於JSON的分散式搜尋和分析引擎,專為水平可擴充套件性,最高可靠性和易管理性而設計。
-
Logstash
Logstash是一個動態資料收集管道,具有可擴充套件的外掛生態系統和強大的Elasticsearch協同作用。
-
Kibana
視覺化您的資料。 導航彈性堆疊。Kibana為您的資料提供了視覺化,是用於配置和管理Elastic Stack各個方面的可擴充套件使用者介面。
-
Beats
Beats是輕量級資料運送平臺,可將邊緣機器的資料傳送到Logstash和Elasticsearch。
Elasticsearch安裝
最新版本為Elasticsearch 6.5.4 GA Release,Windows下載安裝包如下:
安裝條件:64位Java虛擬機器
-
選項1(較慢):下載並安裝JRE: https://www.oracle.com/technetwork/java/javase/overview/index.html
-
選項2(快):可以先安裝chocolatey,再通過chocolatey安裝Java SE Runtime
安裝步驟:
-
下載並解壓縮Elasticsearch
-
執行bin\elasticsearch.exe
-
使用瀏覽器訪問http://localhost:9200
配置ES使用JVM分配的記憶體堆(Heap)
對於小型部署來說1G足夠,最大不應超過記憶體的50%
安裝成功驗證畫面
Elasticsearch入門
Elasticsearch是一個高度可擴充套件的開源全文搜尋和分析引擎。 它允許您快速,近實時地儲存,搜尋和分析大量資料。 它通常用作底層引擎/技術,為具有複雜搜尋功能和要求的應用程式提供支援。
以下是Elasticsearch可用於的一些示例用例:
-
您經營一家線上網上商店,您可以讓客戶搜尋您銷售的產品。在這種情況下,您可以使用Elasticsearch儲存整個產品目錄和庫存,併為它們提供搜尋和自動填充建議。
-
您希望收集日誌或交易資料,並且希望分析和挖掘此資料以查詢趨勢,統計資訊,摘要或異常。在這種情況下,您可以使用Logstash(Elasticsearch / Logstash / Kibana堆疊的一部分)來收集,聚合和解析資料,然後讓Logstash將此資料提供給Elasticsearch。一旦資料在Elasticsearch中,您就可以執行搜尋和聚合來挖掘您感興趣的任何資訊。
-
您執行價格警報平臺,允許精通價格的客戶指定一條規則,例如“我有興趣購買特定的電子產品,如果小工具的價格在下個月內從任何供應商降至X美元以下,我希望收到通知” 。在這種情況下,您可以刮取供應商價格,將其推入Elasticsearch並使用其反向搜尋(Percolator)功能來匹配價格變動與客戶查詢,並最終在發現匹配後將警報推送給客戶。
-
您有分析/業務智慧需求,並希望快速調查,分析,視覺化並詢問有關大量資料的特定問題(想想數百萬或數十億條記錄)。在這種情況下,您可以使用Elasticsearch儲存資料,然後使用Kibana(Elasticsearch / Logstash / Kibana堆疊的一部分)構建自定義儀表板,以便視覺化對您來說重要的資料方面。此外,您可以使用Elasticsearch聚合功能針對您的資料執行復雜的商業智慧查詢。
基本概念
-
NRT(接近實時)
Elasticsearch是一個近實時搜尋平臺。 這意味著從索引文件到可搜尋文件的時間有一點延遲(通常為一秒)。
-
Cluster(叢集) —— 按應用或業務,如HR、法務
叢集是一個或多個節點(伺服器)的集合,它們共同儲存您的整個資料,並提供跨所有節點的聯合索引和搜尋功能。 群集由唯一名稱標識,預設情況下為“elasticsearch”。 此名稱很重要,因為如果節點設定為按名稱加入群集,則該節點只能是群集的一部分。
-
Node(節點) —— 按物理伺服器
節點是作為群集一部分的單個伺服器,儲存資料並參與群集的索引和搜尋功能。 就像叢集一樣,節點由名稱標識,預設情況下,該名稱是在啟動時分配給節點的隨機通用唯一識別符號(UUID)。 如果不需要預設值,可以定義所需的任何節點名稱。
-
Index(索引) —— 按業務領域,如訂單、合同、交易記錄
索引是具有某些類似特徵的文件集合。 例如,您可以擁有客戶資料的索引,產品目錄的另一個索引以及訂單資料的另一個索引。 索引由名稱標識(必須全部小寫),此名稱用於在對其中的文件執行索引,搜尋,更新和刪除操作時引用索引。
-
Type(型別) —— 6.0.0已棄用
-
Document(文件)
文件是可以編制索引的基本資訊單元。 例如,您可以為單個客戶提供文件,為單個產品提供另一個文件,為單個訂單提供另一個文件。 該文件以JSON(JavaScript Object Notation)表示,JSON是一種普遍存在的網際網路資料交換格式。在索引/型別中,您可以根據需要儲存任意數量的文件。 請注意,儘管文件實際上駐留在索引中,但實際上必須將文件編入索引/分配給索引中的型別。
-
Shards & Replicas (分片和複製)
為了解決這個問題,Elasticsearch提供了將索引細分為多個稱為分片的功能。 建立索引時,只需定義所需的分片數即可。 每個分片本身都是一個功能齊全且獨立的“索引”,可以託管在叢集中的任何節點上。
分片很重要,主要有兩個原因:
-
允許水平拆分/擴充套件索引容量
-
允許跨分片(可能在多個節點上)分佈和並行化操作,從而提高效能/吞吐量
分片的分佈方式以及如何將其文件聚合回搜尋請求的機制完全由Elasticsearch管理,對使用者而言是透明的。
在可以隨時發生故障的網路/雲環境中,非常有用,強烈建議使用故障轉移機制,以防分片/節點以某種方式離線或因任何原因消失。 為此,Elasticsearch允許您將索引的分片的一個或多個副本製作成所謂的副本分片或簡稱副本。
主分片和複製分片:
-
此索引包括兩個主分片和兩個複製分片。你的應用會迴圈請求各節點。
-
寫請求路由到主分片然後複製分片。
-
讀請求路由到主分片或任何複製分片。
Elasticsearch配置
ES目錄結構
-
bin: 執行ES例項和外掛管理的指令碼
-
lib: ES使用的庫檔案
-
modules: ES主要模組
-
plugins: ES外掛目錄
安裝後可以通過Windows服務來停止或啟動Elasticsearch。
ES客戶端
-
curl: 可以通過命令列工具curl與ES互動,Windows下curl下載地址:https://curl.haxx.se/download.html
-
Postman: HTTP請求測試工具
Elasticsearch REST API
現在我們已經啟動並執行了節點(和叢集),下一步是瞭解如何與它進行通訊。 幸運的是,Elasticsearch提供了一個非常全面和強大的REST API,您可以使用它與叢集進行互動。 使用API可以完成的一些事項如下:
-
檢查群集,節點和索引執行狀況,狀態和統計資訊
-
管理您的群集,節點和索引資料和後設資料
-
對索引執行CRUD(建立,讀取,更新和刪除)和搜尋操作
-
執行高階搜尋操作,例如分頁,排序,過濾,指令碼編寫,聚合等等
查詢叢集狀態:GET http://localhost:9200/_cat/health?v
查詢節點狀態:GET http://localhost:9200/_cat/nodes?v
查詢索引列表:GET http://localhost:9200/_cat/indices?v
建立索引customer:PUT http://localhost:9200/customer?pretty
{
"name": "John Doe"
}
刪除索引:DELETE http://localhost:9200/customer?pretty
基本語法:<HTTP Verb> /<Index>/<Type>/<ID>
更新/建立索引(帶文件ID):PUT http://localhost:9200/customer/_doc/1?pretty
建立索引(不帶文件ID):POST http://localhost:9200/customer/_doc?pretty
更新文件內容:POST http://localhost:9200/customer/_doc/1?pretty
{
"script" : "ctx._source.age += 5"
}
刪除文件:DELETE http://localhost:9200/customer/_doc/2?pretty
Elasticsearch .NET客戶端
Elasticsearch的.NET客戶端包括Elasticsearch.Net和NEST:
-
Elasticsearch.Net - 底層客戶端
-
NEST (推薦使用) - 高階客戶都
Elasticsearch PasS申請流程(CIO)
準備材料
-
Obtain the Name Domain requirements.
-
Elastic Search Version
-
Node Configuration
-
Instance Count
-
Instance Type
-
Storage Configuration
-
Storage Type
-
Volume Type
-
Volume Size
-
Snaposhot Configuration
申請流程
-
Application team submits an Infrastructure Architecture type RITM to ED (INFRADELV-OPER-CIOENVDELV).
The ticket contains the requirements above. (See I. Requirements)
-
ED assignee submits a CHG to ID (INFRADELV-CIO-Infrastructure Design) for TA357 update.
-
ED assignee creates the AWS ElasticSearch in AWS.
-
Application team verifies the configuration and provides sign off.
CIO Elasticsearch服務建立負責:ED Team
AWS Elasticsearch服務版本:5.3 (可以跟ED確認)
服務例項命名規則:AppName-AIRID-ENV
流程
訪問控制可通過CAPP申請,如開通EC2訪問ES的許可權(resource based permissions)
附錄
參考連結:
-
Elasticsearch安裝及配置(舊版本): http://blog.csdn.net/tzhuwb/article/details/77430815
-
Head外掛(Web IDE):http://blog.csdn.net/qq3401247010/article/details/78742524
-
PHP建立/搜尋/刪除索引資料:https://www.cnblogs.com/life_lt/p/6122767.html