初學 Elasticsearch

初學Elasticsearch

簡介

  • 流行的企業級搜索引擎
  • 基於Lucene(一個開源的全文檢索引擎工具包),使用Java語言開發,基於RESTful web接口,分佈式多用戶能力的全文搜索引擎
  • 作爲Apache許可條款下的開放源碼發佈

流行應用 ELK

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 來配置輸入,過濾,輸出

ELK - Kibana

Kibana 快速入門教程

總結

  • 疫情期間,在家學習一週,效率確實不高。具體表現爲注意力不集中,一些有深度的知識難以理解。
  • 主要是看一些博客來學習,這樣可以快速上手,想要系統地學習的話還是要看一些書籍。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章