1. 程式人生 > 實用技巧 >ELK搭建以及執行和ElasticStarch的詳細使用(7.X版本之上)

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

ELK初體驗 1.官網 https://www.elastic.co/cn/downloads/elasticsearch 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)建立索引(資料庫) http://localhost:9200/local_idx_1 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 欄位具體的圖如下 刪除(DELETE) http://127.0.0.1:9200/索引名稱 使用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

  

參考連結 https://blog.csdn.net/fly910905/article/details/81434518 在下載一個外掛(download and extract site.) 啟動 cd site-server npm install express --save node node-server.js 埠被佔用的話 修改 site_configuration.json 配置檔案 https://www.pianshen.com/article/20981106760/ 具體詳情 https://blog.csdn.net/CODEROOKIE_RUN/article/details/108997073 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分詞的下載地址(最好對應版本) https://github.com/medcl/elasticsearch-analysis-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#對接使用

官方文件地址: https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/index.html 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/huhangfei/p/7524886.html https://www.cnblogs.com/johnyong/p/12906370.html 很實用的教程 https://www.cnblogs.com/johnyong/p/12873386.html https://blog.csdn.net/weixin_34174322/article/details/89620028 https://www.iwmyx.cn/netcoresjdsyelastic.html http://www.manongjc.com/detail/16-bibsziudsvlydsc.html http://www.bubuko.com/infodetail-3331205.html https://blog.csdn.net/weixin_30650859/article/details/96112272 https://blog.csdn.net/weixin_30446197/article/details/96516827 NEST 封裝 https://www.cnblogs.com/diwu0510/p/11161246.html

實際執行效果圖

1.實際演示效果 1億千萬的資料量毫秒查詢(沒時間插入那麼多的資料測試) 2. 具體資源安裝包檔案,.net程式碼,請聯絡博主.....感謝大家觀看至此...謝謝 3.許多不明確的地方,或者錯誤的地方希望大家多多提意見,很多都是資源整合,自己實踐的