Elasticsearch學習筆記2

Elasticsearch is a search engine based on Lucene library.  It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. Elasticsearch is developed in Java and is released as open source under the terms of the Apache License. Official clients are available in Java.NET (C#), PHPPythonApache GroovyRuby and many other languages.ios

 Elasticsearch是一個基於Lucene的開源搜索服務,一個分佈式多用戶能力的全文搜索引擎,是當前流行的企業級搜索引擎,設計用於雲計算中,可以達到準實時搜索。ELK是ElasticSearch,Logstash,Kibana的縮寫,分別提供搜索,數據接入和可視化功能,構成了Elastic的應用棧。數據庫搜索引擎有Elastic,Solr和Splunk等。web

Elastic數據庫

準實時(NRT)數組

Elasticsearch是一個準實時性的搜索平臺,從數據索引到數據能夠被搜索存在必定的時延。ruby

索引(Index)服務器

索引是有共同特性的文檔的集合,索引有本身的名字,能夠對索引執行搜索,更新,刪除等操做。架構

類型(Type)框架

每一個索引能夠包含一個或者多個類型,類型能夠看做一個索引數據的邏輯分組,一般咱們會把擁有相同字段的文檔定義爲同一個類型。分佈式

文檔(Document)ide

文檔是索引信息的基本單元。Elastic中文檔表現爲JSON對象,文檔物理存貯在索引中,並須要被制定一個類型。由於表現爲JSON, 很天然的,文檔是由一個個的字段(Feilds)組成,每一個字段是一個名值對(Name Value Pair)

評分(score)

Elastic是基於Lucene構建的,因此搜索的結果會有一個打分。來評價搜索結果和查詢的相關性。

數據接入和獲取

Elastic棧使用Logstash和Beats來進行數據的消化和獲取。

Logstash用jruby實現,相似於一個數據管道,把輸入的數據進行處理,變形,過濾,而後輸出到其它地方。Logstash 設計了本身的 DSL,包括有區域,註釋,數據類型(布爾值,字符串,數值,數組,哈希),條件判斷,字段引用等。Logstash的數據管道包含三個步驟,Input,Filter和Output,每一步均可以經過plugin來擴展。另外Input和Output還支持配置Codecs,完成對輸入輸出數據的編解碼工做。

Logstash支持的常見的Input包含File,syslog,beats等。Filter中主要完成數據的變形處理,能夠增刪改字段,加標籤,等等。做爲一個開源軟件,Output不單單支持ElasticSearch,還能夠和許多其它軟件集成和目標,Output能夠是文件,graphite,數據庫,Nagios,S3,Hadoop等。

在實際運用中,logstash 進程會被分爲兩個不一樣的角色。運行在應用服務器上的,儘可能減輕運行壓力,只作讀取和轉發,這個角色叫作 shipper;運行在獨立服務器上,完成數據解析處理,負責寫入 Elasticsearch 的角色,叫 indexer。

 

logstash 做爲無狀態的軟件,配合消息隊列系統,能夠很輕鬆的作到線性擴展。Beats是 Elastic 從 packetbeat 發展出來的數據收集器系統。beat 收集器能夠直接寫入 Elasticsearch,也能夠傳輸給 Logstash。其中抽象出來的 libbeat,提供了統一的數據發送方法,輸入配置解析,日誌記錄框架等功能。

Kibana數據展示和可視化

Kibana是一個針對Elasticsearch的開源分析及可視化平臺,用來搜索、查看交互存儲在Elasticsearch索引中的數據。使用Kibana,能夠經過各類圖表進行高級數據分析及展現。

架構

Elastic Stack

ELK是一套棧,Logstash提供數據的消化和獲取,Elasticsearch對數據進行存儲,索引和搜索,而Kibana提供數據可視化和報表的功能。

 

相關文章
相關標籤/搜索