初學Elasticsearch
簡介
- 流行的企業級搜索引擎
- 基於Lucene(一個開源的全文檢索引擎工具包),使用Java語言開發,基於RESTful web接口,分佈式多用戶能力的全文搜索引擎
- 作爲Apache許可條款下的開放源碼發佈
流行應用 ELK
(1)Kafka:接收用戶日誌的消息隊列。
(2)Logstash:做日誌解析,統一成JSON輸出給Elasticsearch。
(3)Elasticsearch:實時日誌分析服務的核心技術,一個schemaless,實時的數據存儲服務,通過index組織數據,兼具強大的搜索和統計功能。
(4)Kibana:基於Elasticsearch的數據可視化組件。
ES 基礎概念
-
Elasticsearch ⇒ 索引(Index) ⇒ 類型(type) ⇒ 文檔(Docments) ⇒ 字段(Fields)
對比 關係數據庫 ⇒ 數據庫 ⇒ 表 ⇒ 行 ⇒ 列 -
Mapping是ES中的一個很重要的內容,它類似於傳統關係型數據中table的schema,用於定義一個索引(index)的某個類型(type)的數據的結構。mapping中主要包括字段名、字段數據類型和字段索引類型這3個方面的定義。
-
數據類型
高版本 ES 將string 分爲 keyword 和 text,加索引keyword不做分析,text做分析。
- ES 爲分佈式系統,可將數據分片,備份,可在 setting 設置
安裝啓動 ES
- 官網下載ES安裝包,解壓即可使用
- Linux系統root用戶不能啓動ES
- 切換到bin目錄下執行elasticsearch 啓動,curl localhost:9200 測試
- ES 集羣操作待探索
ES Restful風格 增刪改查
- 創建index curl -XPUT “localhost:9200/index_name”
- 在創建索引的同時配置mapping,setttings
curl -XPUT "localhost:9200/index_test" -d ' # 注意這裏的'號
{
"settings": {
"index": {
"number_of_replicas": "1", # 設置複製數
"number_of_shards": "5" # 設置主分片數
}
},
"mappings": { # 創建mapping
"test_type": { # 在index中創建一個新的type(相當於table)
"properties": {
"name": { # 創建一個字段(string類型數據,使用普通索引)
"type": "string",
"index": "not_analyzed"
},
"age": {
"type": "integer"
}
}
}
}
}'
-
創建一個文檔 curl -XPUT ‘localhost:9200/index_test/test_type/1?pretty’ -d '{ “filed1_name” : “filed1_value”}‘
相應的 POST操作可修改文檔,GET查看文檔,DELETE刪除文檔 -
ES 檢索查詢功能非常強大
更復雜的API
ES Java API 操作
https://www.cnblogs.com/shizhijie/p/10332970.html
ES 原理
ELK - Logstash
Logstash 的作用就是一個數據收集器,將各種格式各種渠道的數據通過它收集解析之後格式化輸出到 Elasticsearch
Logstash 有自己的DSL 來配置輸入,過濾,輸出
- 最簡單的配置 input { stdin { } } output { stdout {} }
- 更復雜的配置 Logstash 支持多種輸入輸出方式,多種過濾規則
https://blog.csdn.net/yesicatt/article/details/52104787
ELK - Kibana
總結
- 疫情期間,在家學習一週,效率確實不高。具體表現爲注意力不集中,一些有深度的知識難以理解。
- 主要是看一些博客來學習,這樣可以快速上手,想要系統地學習的話還是要看一些書籍。