ELK搭建以及執行和ElasticStarch的詳細使用(7.X版本之上)

雨太陽發表於2020-11-06
 

ELK初體驗

 
 

實際執行效果圖

 

 

 

 

 

 
 
 
 
 
 
 

1.實際演示效果 1億三千萬的資料量 毫秒查詢(沒時間插入那麼多的資料測試)

 

2. 具體資源 安裝包檔案,.net程式碼,請聯絡博主.....感謝大家觀看至此...謝謝

 

3.許多不明確的地方,或者錯誤的地方希望大家多多提意見, 很多都是資源整合,自己實踐的

 
 
1.官網
 
 
2.需要安裝JDK
 
ElasticSearch 是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用方便。
 
所採用的是倒排索引
 
1.正排索引: 由文件指向關鍵詞
 文件--> 單詞1 ,單詞2
單詞1 出現的次數  單詞出現的位置; 單詞2 單詞2出現的位置  ...
 
2.倒排索引: 由關鍵詞指向文件
單詞1--->文件1,文件2,文件3
單詞2--->文件1,文件2
 
 倒排的優缺點和正排的優缺點整好相反。倒排在構建索引的時候較為耗時且維護成本較高,但是搜尋耗時短。
 
我們使用Elasticsearch來完成日誌的檢索、分析工作。
 
bin目錄下
 
elasticsearch-service.bat後面還可以執行這些命令 
install: 安裝Elasticsearch服務 
remove: 刪除已安裝的Elasticsearch服務(如果啟動則停止服務) 
start: 啟動Elasticsearch服務(如果已安裝) 
stop: 停止服務(如果啟動) 
manager:啟動GUI來管理已安裝的服務
 
 
Logstash 是一個用於管理日誌和事件的工具,你可以用它去收集日誌、轉換日誌、解析日誌並將他們作為資料提供給其它模組呼叫,例如搜尋、儲存等。
我們使用Logstash來完成日誌的解析、儲存工作。
 
 
Kibana 是一個優秀的前端日誌展示框架,它可以非常詳細的將日誌轉化為各種圖表,為使用者提供強大的資料視覺化支援。
我們使用Kibana來進行日誌資料的展示工作。
 
 
Beats:安裝在每臺需要收集日誌的伺服器上,將日誌傳送給Logstash進行處理,所以Beats是一個“搬運工”,將你的日誌搬運到日誌收集伺服器上。Beats分為很多種,每一種收集特定的資訊。常用的是Filebeat,監聽檔案變化,傳送檔案內容。一般日誌系統使用Filebeat就夠了。
 
 

使用分析

 

 

 
1.優點?
ELK 是 Elasticsearch、Logstash、Kibana 三個開源軟體的組合。在實時資料檢索和分析場合,三者通常是配合共用,而且又都先後歸於 Elastic.co 公司名下,故有此簡稱。
 
ELK 在最近兩年迅速崛起,成為機器資料分析,或者說實時日誌處理領域,開源界的第一選擇。和傳統的日誌處理方案相比,ELK Stack 具有如下幾個優點:
 
  • 處理方式靈活:Elasticsearch 是實時全文索引;
 
  • 配置簡易上手
 
  • 檢索效能高效:
 
  • 叢集線性擴充套件:(分散式功能);
 
  • 前端操作炫麗:Kibana 介面上,只需要點選滑鼠,就可以完成搜尋、聚合功能,生成炫麗的儀表板
 
  • 有很多相關的 配套外掛
 
  • .........
 
2.缺點?
 
3.為什麼使用? 用途 ?
 
1
  • 資料(日誌)的日益增多
  • 開源
  • ELK 本身非常易用,有一個非常好的社群
  • .........
 
2
  • 問題排查
  • 監控和預警
  • 關聯事件
  • 資料分析
 
4.一般的使用場景是?
 
大資料日誌分析, 大量的訂單資料等等, 分散式整合收集各種日誌 統一檢視等等
 
 
注意一些點
  • 修改預設的 Elasticsearch 叢集名稱
  • 不要暴露 Elasticsearch 在公網上
  • 不要以 root 身份執行 Elasticsearch
  • 定期對 Elasticsearch 進行備份
  • 安裝Elasticsearch的許可權系統外掛-SearchGuard
  • 利用作業系統防火牆設定規避9200埠開放問題
 
 
 
離線的方式(也是所推薦的)
常見的三種
· Beats ==> Elasticsearch ==> Kibana
· Beats ==> Logstash ==> Elasticsearch ==> Kibana
· Beats ==> Kafka ==> Logstash ==> Elasticsearch ==>Kibana (未嘗試成功......)
 
 
 
 
 
 
 
 
 
 
安裝包: 
 
 
 收集、查詢、顯示,正對應logstash、elasticsearch、kibana的功能。
 
 6.X以上需要新增此設定
預設不支援索引型別 需要開啟
 
include_type_name=true
 
 
 

RESTFul API 請求相關內容

 

 
 
1.API基本格式:http://ip:port/<索引>/<型別>/<文件id>
2.常用HTTP動詞:GET/PUT/POST/DELETE
 
欄位型別:
 
keyword型別
1:支援模糊、排序操作,不進行分詞,支援精確匹配,直接索引,支援聚合 2:keyword型別的最大支援的長度為——32766個UTF-8型別的字元,可以通過設定ignore_above指定自持字元長度,超過給定長度後的資料將不被索引,無法通過term精確匹配檢索返回結果。
3.儲存資料時候,不會分詞建立索引
 
text型別
1:支援模糊、排序操作,支援分詞,也可以精確查詢、全文檢索,不支援聚合 2:test型別的最大支援的字元長度無限制,適合大欄位儲存; 使用場景: 儲存全文搜尋資料, 例如: 郵箱內容、地址、程式碼塊、部落格文章內容等。 預設結合standard analyzer(標準解析器)對文字進行分詞、倒排索引。 預設結合標準分析器進行詞命中、詞頻相關度打分。
 
儲存資料時候,會自動分詞,並生成索引(這是很智慧的,但在有些欄位裡面是沒用的,所以對於有些欄位使用text則浪費了空間
 
 
IK分詞具體可以演示(kibana 控制檯演示)
使用場景: 儲存郵箱號碼、url、name、title,手機號碼、主機名、狀態碼、郵政編碼、標籤、年齡、性別等資料。 用於篩選資料(例如: select * from x where status='open')、排序、聚合(統計)。 直接將完整的文字儲存到倒排索引中。
 
 
(PUT)建立索引(資料庫)
 
PUT(mappings) 建立了索引(資料庫),並且設定對映欄位資訊
 
1.設定對映的mappings欄位等欄位型別等 
PUT 
http://localhost:9200/local_index/cytest/

在POST時
{
    "mappings": {
        "cytest": {
            "id": {
                "type": "long"
            },
            "title": {
                "type": "text"
            },
            "content": {
                "type": "keyword"
            },
            "date": {
                "type": "date",
                "fromat": "yyyy-MM-dd HH:mm:ss"
            }
        }
    }
}

2. 往對應的對映欄位裡面賦值(連結(POST http://localhost:9200/local_idx_1/cytest/))
下資料庫_表下增加一個資料)

{
    "id": "1",
    "title": "測試資料1",
    "content": "大意了沒有閃",
    "date": "2020-11-04"
}


修改的話 得到_id 拼到連結後面 傳入資料就是修改



3.簡單查詢 POST (http://localhost:9200/local_index/cytest/_search/)

 POST http://127.0.0.1:9200/myname/_search
{
	"query":{
		"match":{
              "name":"zhangsan"
		}
	}
}
{
	"query":{
		"term":{
              "Title":"徐若蓬稚"
		}
	}
}

1 term查詢(精準查詢)
terms 查詢是term的擴充套件,可以支援多個vlaue匹配,只需要一個匹配就可以了。
2 math查詢(分詞匹配查詢)
match查詢是按ES分詞的倒排表進行查詢,而keyword不會被分詞,match的需要跟keyword的完全匹配可以。可以用於一般性的匹配查詢。
match_all可以用於查詢全部資訊。
multi_match
multi_match是多欄位進行匹配查詢。
3 fuzzy查詢(模糊查詢)
4 wildcard(萬用字元查詢)
5 bool查詢(布林查詢)
6其他知識點 
取特定欄位(_source)
分頁(size ,from)
排序(sort)

具體的更多詳請訪問
https://blog.csdn.net/shu616048151/article/details/102647313

  

 
 
關於設定欄位型別,詳情請看下面的文章
https://blog.csdn.net/zx711166/article/details/81667862
欄位具體的圖如下 
 
 
 
 
 
 
 
 
 
使用Elasticsearch Sql外掛的語法查詢
 
elasticsearch-sql的安裝
 
ElasticSeartch 安裝目錄下的 bin下面執行
 
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/6.3.1.0/elasticsearch-sql-6.3.1.1.zip

  

參考連結
 
在下載一個外掛(download and extract site.)
啟動
cd site-server npm install express --save node node-server.js
埠被佔用的話
修改 site_configuration.json 配置檔案
 
 
具體詳情
 
elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/6.3.1.0/elasticsearch-sql-6.3.1.1.zip
 
 
 
  1. cd site-server
  2. npm install express --save
  3. node node-server.js
 
 
 
另外 演示 kibana 控制檯可以演示 Sql的查詢效果
 
POST /_sql?format=json { "query": "SELECT id,title,content,date FROM local_index WHERE content like '%哈哈%'" }
 
 
 

IK分詞的相關使用

 

 
1.IK分詞的下載地址(最好對應版本)
 
2.解壓到elasticsearch-7.6.1\plugins目錄的 新建ik 檔案下就好了
 
3. 然後重啟elasticsearch
 
4.使用kibana 檢視效果
 
1. 索引時用 ik_max_word
2. 在搜尋時用 ik_smart
 
POST _analyze { "analyzer":"ik_max_word", "text":"我愛你中國" }

 

 
 
自定義分詞
1. \plugins\ik\config路徑下 建立test檔案, 在建立分詞.dic檔案
 
2. 然後 IKAnalyzer.cfg.xml 配置分詞檔案路徑,如圖:

GET _analyze { "analyzer": "ik_smart", "text":"年輕人不講武德" } GET _analyze { "analyzer": "ik_smart", "text":"大意了沒有閃" }
 
 
 
 3.然後 Kibana檢視效果
 
GET _analyze
{
  "analyzer": "ik_smart",
  "text":"年輕人不講武德"
}

GET _analyze
{
  "analyzer": "ik_smart",
  "text":"大意了沒有閃"
}

  

C#對接使用

 

 
官方文件地址:
 
ElasticSearch官方網站提供了兩個.net客戶端驅動程式
 
Elasticsearch.Net
NEST 更高階一點
 
例子採用 NEST 程式
 
 
類比傳統關係型資料庫:
 
//Relational DB -> Databases -> Tables -> Rows -> Columns
//Elasticsearch -> Indices -> Types -> Documents -> Fields
 
 
DB使用過程:建立資料庫->建立表(主要是設定各個欄位的屬性)->寫入數 ES使用過程:建立索引->為索引maping一個Type(同樣是設定型別中欄位的屬性)->寫入數
 
詳情參考文章
 
 
很實用的教程
https://www.cnblogs.com/johnyong/p/12873386.html
 
 
 
 
 
 
 
NEST 封裝
 
 
 
 
 
 
 
 
 
 

 

 
 
 
 
 
 

相關文章