Elasticsearch叢集運維相關知識
0 概念
Elasticsearch是一個基於Apache Lucene™的開源搜尋引擎。
lucene是一個開源搜尋引擎庫。使用java開發。通過RESTful-API隱藏lucene的複製性,讓全文搜尋變得簡單。可以通過下面三點來描述它:
- 分散式的實時檔案儲存,每個欄位都被索引,並且被搜尋
- 分散式的實時分析搜尋引擎
- 可以擴充套件到上百臺伺服器
一 安裝
- http://www.elasticsearch.org/download/ ,從官方網站下載Elasticsearch。
- 解壓和啟動:./bin/elasticsearch (-d)
新增-d是後臺執行 - 判斷啟動成功與否
curl ‘http://localhost:9200/?pretty’
返回狀態為200,則表示正常執行 - 叢集和節點
節點(node)是一個執行著的Elasticsearch例項。叢集(cluster)是一組具有相同cluster.name的節點集合。
節點之間協同工作,共享資料,並提供故障轉移和擴充套件功能。
cluster.name為叢集的預設值,最好修改,可以防止新啟動的es節點加入到同網路中的另一個叢集中。
通過修改config/目錄下的elasticsearch.yml檔案,重啟程式做到。
二 文件
應用中的物件很少只是簡單的鍵值列表,更多時候它擁有複雜的資料結構,比如包含日期、地理位置、另一個物件或者陣列。
你想將這些資料儲存到由行和列組成的關聯式資料庫中,就好像是把一個豐富,資訊表現力強的物件拆散了放入一個非常大的表格中:你不得不拆散物件以適應表模式(通常一列表示一個欄位),然後又不得不在查詢的時候重建它們。
Elasticsearch是面向文件(document oriented)的,這意味著它可以儲存整個物件或文件(document)。然而它不僅僅是儲存,還會索引(index)每個文件的內容使之可以被搜尋。在Elasticsearch中,你可以對文件(而非成行成列的資料)進行索引、搜尋、排序、過濾。這種理解資料的方式與以往完全不同,這也是Elasticsearch能夠執行復雜的全文搜尋的原因之一。
三 索引
它涵蓋了一些基本的概念介紹,如索引(indexing)、搜尋(search)以及聚合(aggregations)。
在Elasticsearch中儲存資料的行為就叫做索引(indexing),不過在索引之前,我們需要明確資料應該儲存在哪裡。
來看一個對比圖:
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
Elasticsearch叢集可以包含多個索引(indices)(資料庫),每一個索引可以包含多個型別(types)(表),每一個型別包含多個文件(documents)(行),然後每個文件包含多個欄位(Fields)(列)。
四 搜尋
例如:檢索單個員工的資訊
通過執行HTTP GET請求並指出文件的“地址”——索引、型別和ID既可。根據這三部分資訊,我們就可以返回原始JSON文件。
GET 檢索
DELETE 刪除
HEAD 檢查是否存在
PUT 已存在文件會進行更新
五 聚合
Elasticsearch有一個功能叫做聚合(aggregations),它允許你在資料上生成複雜的分析統計。它很像SQL中的GROUP BY但是功能更強大。
六 分散式
Elasticsearch致力於隱藏分散式系統的複雜性。以下這些操作都是在底層自動完成的:
- 將你的文件分割槽到不同的容器或者分片(shards)中,它們可以存在於一個或多個節點中。
- 將分片均勻的分配到各個節點,對索引和搜尋做負載均衡。
- 冗餘每一個分片,防止硬體故障造成的資料丟失。
- 將叢集中任意一個節點上的請求路由到相應資料所在的節點。
- 無論是增加節點,還是移除節點,分片都可以做到無縫的擴充套件和遷移。
相關文章
- Elasticsearch——search相關知識Elasticsearch
- 400+節點的 Elasticsearch 叢集運維Elasticsearch運維
- 400+ 節點的 Elasticsearch 叢集運維Elasticsearch運維
- ElasticSearch 叢集的規劃部署與運維Elasticsearch運維
- web叢集都有哪些學習知識?Linux運維技術WebLinux運維
- 【IT運維小知識】如何通俗理解節點、叢集以及主從?運維
- 事務相關知識集錦
- 班機運輸相關知識
- PB 級大規模 Elasticsearch 叢集運維與調優實踐Elasticsearch運維
- MongoDB叢集運維筆記MongoDB運維筆記
- RabbitMQ叢集運維實踐MQ運維
- redis哨兵,叢集和運維Redis運維
- 插曲:Kafka的叢集部署實踐及運維相關Kafka運維
- MySQL 叢集知識點整理MySql
- mongos分片叢集管理和運維Go運維
- cd命令有哪些相關知識?學linux運維命令基礎入門Linux運維
- Shell相關知識
- .net相關知識
- mobile相關知識
- rollback相關知識
- Redis 相關運維操作Redis運維
- Elasticsearch之叢集。Elasticsearch
- Elasticsearch 叢集搭建Elasticsearch
- PostgreSQL叢集方案相關索引頁SQL索引
- 音訊相關知識音訊
- Git相關知識點Git
- SSL相關知識科普
- Redis的相關知識Redis
- redis相關知識點Redis
- RPM相關知識
- 直播相關知識收集
- shell相關知識點
- 證書相關知識
- 網路相關知識
- Oracle 相關知識點Oracle
- oracle awr相關知識Oracle
- nohup使用相關知識
- /proc的相關知識