乘風破浪,遇見雲原生(Cloud Native)之Docker安裝運行Elasticsearch v7.17.6/v8.4.3、Kibana v7.17.6/v8.4.3

什麼是Elasticsearch

https://www.elastic.co/cn/elasticsearch/

image

Elasticsearch是一個基於Lucene庫的搜索引擎。它提供了一個分佈式、支持多租戶的全文搜索引擎,具有HTTP Web接口和無模式JSON文檔。Elasticsearch是用Java開發的,並在Apache許可證下作爲開源軟件發佈。官方客戶端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和許多其他語言中都是可用的。根據DB-Engines的排名顯示,Elasticsearch是最受歡迎的企業搜索引擎,其次是Apache Solr,也是基於Lucene

歷史

Shay Banon在2004年創造了Elasticsearch的前身,稱爲Compass。在考慮Compass的第三個版本時,他意識到有必要重寫Compass的大部分內容,以“創建一個可擴展的搜索解決方案”。因此,他創建了“一個從頭構建的分佈式解決方案”,並使用了一個公共接口,即HTTP上的JSON,它也適用於Java以外的編程語言。Shay Banon在2010年2月發佈了Elasticsearch的第一個版本。

Elasticsearch BV成立於2012年,主要圍繞Elasticsearch及相關軟件提供商業服務和產品。2014年6月,在成立公司18個月後,該公司宣佈通過C輪融資籌集7000萬美元。這輪融資由新企業協會(NEA)牽頭。其他投資者包括Benchmark Capital和Index Ventures。這一輪融資總計1.04億美元。

2015年3月,Elasticsearch公司更名爲Elastic。

Elastic Cloud是從2015年被Elastic收購的Found發展而來的,Elastic Cloud是由Elasticsearch驅動的SaaS產品系列,包括Elasticsearch服務,以及Elastic App搜索服務和Elastic網站搜索服務,這些服務都是由Elastic收購Swiftype發展而來的。2017年底,Elastic與谷歌創建了合作關係,在GCP中提供Elastic Cloud,而阿里巴巴則在阿里雲中提供Elasticsearch和Kibana。2019年5月,Elastic宣佈與騰訊雲創建全球合作伙伴關係。

在2018年6月,Elastic提交了首次公開募股申請,估值在15億到30億美元之間。公司於2018年10月5日在紐約證券交易所掛牌上市。

2019年年底,Elasticsearch出現大量數據泄露事件,有27億個電子郵件地址,10億個電子郵件帳戶密碼以及近80萬份出生證明遭到泄露。

特性

Elasticsearch是與名爲Logstash的數據收集和日誌解析引擎以及名爲Kibana的分析和可視化平臺一起開發。這三個產品被設計成一個集成解決方案,稱爲“Elastic Stack”(以前稱爲“ELK stack”)。

Elasticsearch可以用於搜索各種文檔。它提供可擴展的搜索,具有接近實時的搜索,並支持多租戶。”Elasticsearch是分佈式的,這意味着索引可以被分成分片,每個分片可以有0個或多個副本。每個節點託管一個或多個分片,並充當協調器將操作委託給正確的分片。再平衡和路由是自動完成的。“相關數據通常存儲在同一個索引中,該索引由一個或多個主分片和零個或多個複製分片組成。一旦創建了索引,就不能更改主分片的數量。

Elasticsearch使用Lucene,並試圖通過JSON和Java API提供其所有特性。它支持facetting和percolating,如果新文檔與註冊查詢匹配,這對於通知非常有用。

另一個特性稱爲“網關”,處理索引的長期持久性;例如,在服務器崩潰的情況下,可以從網關恢復索引。Elasticsearch支持實時GET請求,適合作爲NoSQL數據存儲,但缺少分佈式事務。

什麼是Kibana

https://www.elastic.co/cn/kibana/

image

Kibana是一個用於Elasticsearch的源碼可用的數據可視化儀表盤軟件,其在OpenSearch中的免費和開源的繼任者是OpenSearch Dashboards。

歷史

它在Elasticsearch集羣上索引的內容上提供可視化功能。用戶可以在大量的數據上創建條形圖、線形圖和散點圖,或者餅圖和地圖。

Kibana還提供了一個被稱爲Canvas的演示工具,允許用戶創建幻燈片,直接從Elasticsearch中獲取實時數據。

Elasticsearch、Logstash和Kibana的組合被稱爲 "Elastic Stack"(以前是 "ELK stack"),可作爲產品或服務提供。Logstash爲Elasticsearch提供輸入流,用於存儲和搜索,Kibana訪問數據用於可視化,如儀表盤。Elastic還提供 "Beats "包,可配置爲提供有關各種數據庫和應用技術的預製Kibana可視化和儀表盤。

2019年12月,Elastic推出Kibana Lens產品。

2021年5月,OpenSearch發佈了OpenSearch Dashboards的第一個測試版,這是在Elastic停止開源項目並轉向專有軟件開發後,由Amazon Web Services贊助的Kibana的Apache許可分叉。

什麼是Logstash

Logstash是一個開源的數據收集引擎,具有實時管道功能。Logstash可以動態地統一來自不同來源的數據,並將數據規範化到你選擇的目的地。

採集是通過一些可配置的輸入插件完成的,包括原始套接字/包通信、文件尾隨和幾個消息總線客戶端。一旦一個輸入插件收集了數據,它就可以被任何數量的過濾器處理,這些過濾器修改和註釋事件數據。最後,事件被路由到輸出插件,輸出插件可以將事件轉發到各種外部程序,包括Elasticsearch、本地文件和幾個消息總線的實現。

Docker創建一個公共網絡

docker network create elastic

image

其他命令包括

docker network create
docker network ls
docker network connect
docker network rm
docker network disconnect
docker network inspect

Docker安裝運行Elasticsearch

https://hub.docker.com/_/elasticsearch

主要版本

  • 8.4.3
  • 7.17.6
  • 6.8.23

創建實例

  1. 通過Docker來創建Elasticsearch實例(開發環境)
docker run -d --name elasticsearch --net elastic --restart unless-stopped -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.4.3

image

docker run -d --name elasticsearch --net elastic --restart unless-stopped -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.6

image

  1. 通過Docker來創建Elasticsearch實例(生產環境)
docker run -d --name elasticsearch --net elastic --restart unless-stopped -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.4.3
docker run -d --name elasticsearch --net elastic --restart unless-stopped -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.17.6

訪問信息

如果是7.x可以使用HTTP,如果是8.x必須使用HTTPS

image


{
  "name" : "8b8d3440d83b",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "oSZLS2oDT4i2_ta71d77Lg",
  "version" : {
    "number" : "7.17.6",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "f65e9d338dc1d07b642e14a27f338990148ee5b6",
    "build_date" : "2022-08-23T11:08:48.893373482Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

授權信息

默認賬戶名是:elastic

如果是8.x需要重置下密碼

docker exec -it elasticsearch /bin/bash
cd bin
elasticsearch-reset-password -u elastic
Y

image

8.x還需要生成一個後續Kibana鏈接使用的Enrollment token

elasticsearch-create-enrollment-token -s kibana

image

Docker安裝運行Kibana

https://hub.docker.com/_/kibana

主要版本

  • 8.4.3
  • 7.17.6
  • 6.8.23

創建實例

  1. 通過Docker來創建Kibana實例(開發環境)
docker run -d --name kibana --net elastic --restart unless-stopped -p 5601:5601 kibana:8.4.3

image

docker run -d --name kibana --net elastic --restart unless-stopped -p 5601:5601 kibana:7.17.6

image

  1. 通過Docker來創建Kibana實例(生產環境)
docker run -d --name kibana --net elastic --restart unless-stopped -p 5601:5601 docker.elastic.co/kibana/kibana:8.4.3
docker run -d --name kibana --net elastic --restart unless-stopped -p 5601:5601 docker.elastic.co/kibana/kibana:7.17.6

訪問信息

如果是7.x可以直接進來,如果是8.x還需要完成授權驗證

image

授權驗證

對8.x的版本需要做授權驗證

image

這裏直接填入上面獲取到的Enrollment token值。

image

接下來會找你要個驗證碼。

image

這個驗證碼其實在這個實例有輸出,如果你也是用Docker for Windows,直接點進實例可以看。

image

或者通過命令docker logs -f kibana查看。

image

這一步驗證通過後,就往後初始化了

image

進入到登陸界面,這時候賬號密碼和前面Elasticsearch是一致的。

image

image

驗證安裝

Kibana只是一套可視化面板,其數據來自Elasticsearch,我們從索引清單這裏可以看到。

image

Docker安裝運行Logstash

https://hub.docker.com/_/logstash

主要版本

  • 8.4.3
  • 7.17.6
  • 6.8.23

創建實例

  1. 通過Docker來創建Logstash實例(開發環境)
docker run -d --name logstash --restart unless-stopped logstash:8.4.3
docker run -d --name logstash --restart unless-stopped logstash:7.17.6

image

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章