摘要:接著上一篇搭建的環境繼續學習,從概念開始,本篇文章將介紹中的一些重要概念及部分原理性概念,以下內容中簡稱為。表示字段,具體指的是中的某一個數據字段。可以在故障時提供備用服務。
接著上一篇ElasticSearch搭建的環境繼續學習,從概念開始,本篇文章將介紹ElasticSearch中的一些重要概念及部分原理性概念,以下內容中簡稱為ES。一、ES部分名詞解釋
1.NRT:英文全稱為Near RrealTime。中文意思為近實時,從寫入數據到可以被搜索到之間有一個小于1s的延遲,使用ES進行搜索和數據分析可以達到秒級的速度。
注:由于ES寫入數據到可以被索引到之間有延遲,所以對于業務中包含有保存冪等性需求時,需要注意; 在寫完之后手動執行刷新操作,然后再查詢,否則會可能出現數據寫重的情況。
2.cluster:表示由多個節點組成的ES集群(常見集群種類:HA,HB,HP,具體可自行查閱資料)。集群有一個名稱,默認是elasticsearch,可以在配置文件中通過cluster.name字段手動指定,集群最小節點數可以為1個。
3.node:集群中的節點。節點也有自己的名稱,默認是隨機分配的,默認情況下,節點啟動之后,會自動去尋找名稱為cluster.name字段所指定的集群。如果在默認不修改cluster.name的情況下,啟動多個節點之后,它們會自動組成一個ES集群。
4.document:文檔。它是ES中的最小數據單元,通常使用JSON數據結構表示,每個index(索引)的type(類型)中,都可以存儲多個Document。
5.field:表示字段,具體指的是Document中的某一個數據字段。比如學生信息文檔中的學號字段。
6.index:索引。是多個有相似結構的文檔數據的集合,類似于MySQL數據庫中的數據庫概念。
7.type:類型。表示某個索引下面的某種相同數據結構的結合。在較低版本的ES中,一個索引中可以有多個type,高版本中一個索引下只能有一個類型,官方建議每個索引下最好只有一個type。如果一個index下有多個type,在不同的搜索場景下可能會相互有影響,比如:一個索引下面有一個用于統計分析的type和一個用于搜索的type,如果統計請求比較慢,有可能會阻塞到查詢請求。
8.shard:每個index會被拆分為多個shard,每個shard就會存放這個index的一部分數據,這此shard會散落在多臺服務器上。有了shard就可以進行橫向擴展,存儲更多數據,讓搜索和分析等操作分布到多臺服務器上去執行,提升吞吐量和性能。shard又分為replica shard和primary shard,每個shard都是一個lucene index.
9.replica:每個服務器隨時可能故障或宕機,此時shard就可以會丟失,因此可以為每一個shard創建多個replica副本。replica可以在shard故障時提供備用服務。保證數據不丟失或者丟失很少,多個replica還可以提升搜索操作的吞吐量和性能。
注意: primary shard:建立索引時一次設置,不能修改,默認5個; replica shard:可隨時修改,默認1個),默認每個索引10個shard,5個primary shard, 5個replica shard,最小的高可用配置,是2臺服務器。二、ES的文檔數據格式的優點
1.可以提供復雜的面向對象的數據結構;
2.如果不適用ES,使用傳統的關系型數據庫,復雜的對象只能拍平,放到多個關聯表中,查詢的時候需要查詢多個表,而且還得重新組合成復雜對象,特別麻煩;
3.基于ES面向文檔的特性,而且提供了倒排索引,所以可以勝任復雜的查詢和檢索需求;
4.使用傳統,流行的文檔對象來存儲,很容易處理;
1.集群健康狀態
使用_cat相關api查看,如下:
[root@es-master ~]# curl http://localhost:9200/_cat/health?pretty #返回結果 1549092107 02:21:47 elasticsearch green 3 3 134 67 0 0 0 0 - 100.0%
可以看出,如果集群中的所有節點都正常啟動,整個集群的狀態為green;
2.集群的三種狀態
(1)紅(red):不是所有的primary shard都是active狀態的,部分索引有數據丟失了; (2)黃(yellow):每個索引的primary shard都是active狀態的,但是部分replica shard不是active狀態,處于不可用的狀態,此時可以繼續使用; (3)綠(green):每個索引的primary shard和replica shard都是active狀態的;
集群啟動時狀態變化過程:
集群啟動的時候,首先會有某些節點先啟動,這些節點會被作為主節點,在所有的主節點未完全啟動之前,集群此時處于red狀態; 當主節點全部啟動之后,集群狀態會變為yellow狀態; 所有的replica節點都啟動完成之后,集群中的所有節點都已經齊全,此時集群變為green狀態;
3._cat中的重要api
查看集群中的節點數
[root@es-master ~]# curl http://localhost:9200/_cat/nodes?pretty 192.168.199.12 29 95 12 0.00 0.08 0.06 mdi * es-node2 192.168.199.11 41 88 25 0.64 0.75 0.57 mdi - es-node1 192.168.199.11 20 88 25 0.64 0.75 0.57 mdi - es-node3
表示集群中有三個節點,es-node1,es-node2,es-node3;
查看集群中的分片數
[root@es-master ~]# curl http://localhost:9200/_cat/shards?pretty student_index 3 p STARTED 1 4.3kb 192.168.199.11 es-node1 student_index 3 r STARTED 1 4.3kb 192.168.199.11 es-node3 student_index 2 p STARTED 2 8.5kb 192.168.199.12 es-node2 student_index 2 r STARTED 2 8.5kb 192.168.199.11 es-node3 student_index 1 r STARTED 1 4.4kb 192.168.199.11 es-node1 student_index 1 p STARTED 1 4.4kb 192.168.199.12 es-node2 student_index 4 p STARTED 1 4.4kb 192.168.199.11 es-node1 student_index 4 r STARTED 1 4.4kb 192.168.199.11 es-node3 student_index 0 p STARTED 0 261b 192.168.199.12 es-node2 student_index 0 r STARTED 0 261b 192.168.199.11 es-node3
表示student_index索引默認有10個分片,5個primary和5個replica;
查看集群中的索引列表
[root@es-master ~]# curl http://localhost:9200/_cat/indices?v health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .monitoring-es-6-2019.01.27 kXMATwLHShGoGrAhOVPZqg 1 1 39439 432 48.3mb 24.1mb green open .monitoring-kibana-6-2019.01.27 PpgWm9PSRXKU385_pQis2g 1 1 1512 0 1mb 531.7kb green open .elastichq 19vJX4__TcunPjMCfybmdA 5 1 1 0 14kb 7kb green open student_index 8VHSS7wyQIadWBcNWJsGPQ 5 1 5 0 43.9kb 21.9kb green open student VXHrKYNcSRKELb7WSzToCw 5 1 2 0 23.8kb 11.9kb
默認展示的是系統索引和自己創建的索引,參數v表示查看詳細信息;
_cat還有其他api,但是不是很常用,如果需要,可以通過如下命令查看即可
[root@es-master ~]# curl http://localhost:9200/_cat =^.^= /_cat/allocation /_cat/shards /_cat/nodes /_cat/tasks ...四、ES簡單操作
此處以電商系統商品搜索為例,使用kibana圖形化操作界面,介紹ES的簡單操作。
1.創建
用法:
PUT /index_name/type_name/id {}
例如:創建一個索引名稱為shop_index,類型為productInfo,id為1的索引
PUT /shop_index/productInfo/1 { "name": "HuaWei Mate8", "desc": "Cheap and easy to use", "price": 2500, "producer": "HuaWei Producer", "tags": [ "Cheap", "Fast" ] }
2.查詢
用法:
GET /index_name/type_name/id
例如:查詢id為1的商品信息
GET /shop_index/productInfo/1 { "_index": "shop_index", "_type": "productInfo", "_id": "1", "_version": 1, "found": true, "_source": { "name": "HuaWei Mate8", "desc": "Cheap and easy to use", "price": 2500, "producer": "HuaWei Producer", "tags": [ "Cheap", "Fast" ] } }
3.修改
方法一:替換,通過ID替換,如果文檔存在,則直接覆蓋
用法:
PUT /index_name/type_name/id {}
例如:將商品價格修改為2400
PUT /shop_index/productInfo/1 { "name": "HuaWei Mate8", "desc": "Cheap and easy to use", "price": 2400, "producer": "HuaWei Producer", "tags": [ "Cheap", "Fast" ] }
注意:替換某個文檔時,需要帶著文檔中的所有字段,否則未帶著的字段會丟失,切記!!!
方法二:通過ID更新部分字段
用法:
POST /index_name/type_name/id/_update {}
例如:將上述商品的價格改為2200
POST /shop_index/productInfo/1/_update { "doc": { "price": 2200 } }
4.刪除
用法:
DELETE /index_index/type_index/id
例如:刪除id為1的商品記錄:
DELETE /shop_index/productInfo/1
本篇文章簡單介紹了ES的一些重要概念及基本用法,為后續內容做鋪墊,下篇文章將繼續ES的多種搜索方式!歡迎評論轉發!
后續更多文章將更新在個人小站上,歡迎查看。
另外提供一些優秀的IT視頻資料,可免費下載!如需要請查看https://www.592xuexi.com
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73394.html
摘要:原文發表在我的個人網站深入理解一基本概念及用法在本系列文章中,我將跟大家一起學習的基本用法,探索的各種高級功能,理解背后的運行原理,并最終達到深入理解靈活使用的目的。下一步深入理解二中間操作流 原文發表在我的個人網站:深入理解 Laravel Eloquent(一)——基本概念及用法 在本系列文章中,我將跟大家一起學習 Eloquent 的基本用法,探索 Eloquent 的各種...
摘要:為什么叫重入鎖呢,我們把它拆開來看就明了了。釋放鎖,每次鎖持有者數量遞減,直到為止。 相信大家在工作或者面試過程中經常聽到重入鎖這個概念,或者與關鍵字 synchrozied 的對比,棧長面試了這么多人,80%的面試者都沒有答對或沒有答到點上,或者把雙重效驗鎖搞混了,哭笑不得。。 那么你對重入鎖了解有多少呢?今天,棧長幫大家撕開重入鎖的面紗,來見識下重入鎖的真實容顏。。 什么是重入鎖 ...
閱讀 2508·2023-04-26 02:47
閱讀 2999·2023-04-26 00:42
閱讀 865·2021-10-12 10:12
閱讀 1372·2021-09-29 09:35
閱讀 1689·2021-09-26 09:55
閱讀 478·2019-08-30 14:00
閱讀 1532·2019-08-29 12:57
閱讀 2350·2019-08-28 18:00