【elasticsearch】4画切、基本概念

文檔

  • elasticsearch是面向文檔的剪芍,文檔是所有可搜索數(shù)據(jù)的最小單位
    • 日志文件中的日志項
    • 一本電影的具體信息/一張唱片的詳細(xì)信息
    • mp3播放器里面的一首歌/一篇pdf文檔中的具體內(nèi)容
  • 文檔會被序列化成json格式,保存在elasticsearch中
    • json對象由字段組成
    • 每個字段都有對應(yīng)的字段類型(字符串睬辐,數(shù)值疗垛,布爾,日期硫朦,二進(jìn)制贷腕,范圍類型)
  • 每個文檔都有一個unique id
    • 你可以自己制定id
    • 或者通過elasticsearch自動生成

json文檔

json文檔
  • 一篇文檔包含了一系列的字段,類似數(shù)據(jù)庫中的一條記錄
  • json文檔咬展,格式靈活泽裳,不需要預(yù)先定義格式
    • 字段的類型可以指定或者通過elasticsearch自動推算
    • 支持?jǐn)?shù)組,支持嵌套

上篇通過csv文件裝換的數(shù)據(jù)

{
    "@version" => "1",
          "id" => "177939",
       "genre" => [
        [0] "Animation",
        [1] "Romance"
    ],
        "year" => 2017,
       "title" => "The Night Is Short, Walk on Girl"
}

文檔的元數(shù)據(jù)

文檔的元數(shù)據(jù)
  • 元數(shù)據(jù)破婆,用于標(biāo)注文檔的相關(guān)信息
    • _index 文檔所屬的索引名
    • _type 文檔所屬的類型名
    • _id 文檔唯一id
    • _source 文檔的原始json數(shù)據(jù)
    • _all 整合所有字段內(nèi)容到該字段涮总,已被廢除
    • _version 文檔的版本信息
    • _score 相關(guān)性打分

索引

索引
  • index 索引是文檔的容器,是一類文檔的結(jié)合
    • index提現(xiàn)了邏輯空間的概念:每個索引都有自己的mapping定義祷舀,用戶定義包含的文檔的字段名和字段類型
    • shard體現(xiàn)了物理空間的概念:索引中的數(shù)據(jù)分散在shard上
  • 索引的mapping和settings
    • mapping定義文檔字段的類型
    • setting定義不同的數(shù)據(jù)分布

索引的不同語義

elasticsearch集群中
  • 名詞 一個elasticsearch集群中瀑梗,可以創(chuàng)建很多個不同的索引
  • 動詞 保存一個文檔到elasticsearch中的過程也叫索引
  • 名詞 一個b樹索引烹笔,一個倒排索引

type

  • 7.0之前,一個index可以設(shè)置多個types
  • 6.0開始抛丽,type已經(jīng)被拋棄谤职,7.0開始,一個索引只能創(chuàng)建一個type亿鲜,_doc
  • 傳統(tǒng)關(guān)系型數(shù)據(jù)庫和elasticsearch的區(qū)別
    • elasticsearch - schemaless/相關(guān)性/高性能全文搜索
    • rdms - 事務(wù)性/join

抽象和類比

rdbms(關(guān)系型數(shù)據(jù)庫) elasticsearch
table index(type)
row document
column filed
schema mapping
sql dsl

提供了rest-api 容易被各種語言調(diào)用

rest-api

一些基本的api

  • indeces
    • 創(chuàng)建index
      • put movies
    • 查看所有的index
      • _cat/indices

kibana應(yīng)用

kibana應(yīng)用-索引管理

index相關(guān)api

#查看索引相關(guān)信息
GET kibana_sample_data_ecommerce

#查看索引的文檔總數(shù)
GET kibana_sample_data_ecommerce/_count

#查看前10條文檔允蜈,了解文檔格式
POST kibana_sample_data_ecommerce/_search
{
}

#_cat indices API
#查看indices
GET /_cat/indices/kibana*?v&s=index

#查看狀態(tài)為綠的索引
GET /_cat/indices?v&health=green

#按照文檔個數(shù)排序
GET /_cat/indices?v&s=docs.count:desc

#查看具體的字段
GET /_cat/indices/kibana*?pri&v&h=health,index,pri,rep,docs.count,mt

#How much memory is used per index?
GET /_cat/indices?v&h=i,tm&s=tm:desc

節(jié)點,集群蒿柳,分片以及副本

分布式系統(tǒng)的可用性和拓展性

  • 高可用性
    • 服務(wù)可用性 - 允許有節(jié)點停止服務(wù)
    • 數(shù)據(jù)可用性 - 部分節(jié)點丟失饶套,不會丟失數(shù)據(jù)
  • 可拓展性
    • 請求量提升,數(shù)據(jù)的不斷增長(將數(shù)據(jù)分布到所有節(jié)點上)

分布式特性

  • elasticsearch的分布式架構(gòu)的好處
    • 存儲的水平擴容
    • 提高系統(tǒng)的可用性垒探,部分節(jié)點停止服務(wù)妓蛮,整個集群的服務(wù)不受影響
  • elasticsearch的分布式架構(gòu)
    • 不同集群通過不同的名字區(qū)分,默認(rèn)名字“elasticsearch”
    • 通過配置文件修改叛复,或者在命令行中 -E cluster.name=cutie進(jìn)行設(shè)定
    • 一個集群可以有一個或者多個節(jié)點

節(jié)點

  • 節(jié)點是一個elasticsearch的實例
    • 本質(zhì)上是一個java進(jìn)程
    • 一臺機器上可以運行多個elasticsearch進(jìn)程仔引,但是生產(chǎn)環(huán)境一般建議一臺機器上只運行一個elasticsearch實例
    • 每一個節(jié)點都有名字,通過配置文件配置褐奥,或者啟動的時候 -E node.name=node1指定
    • 每一個節(jié)點在啟動之后會分配一個uid咖耘,保存在data目錄下

master-eligible nodes 和 master node

  • 每個節(jié)點啟動后,默認(rèn)就是一個master eligible節(jié)點
    • 可以設(shè)置node.master:false禁止
  • master-eligible節(jié)點可以參加選主流程撬码,成為master節(jié)點
  • 當(dāng)?shù)匾粋€節(jié)點啟動的時候儿倒,它會將自己選舉成master節(jié)點
  • 每個節(jié)點上都保存了集群的狀態(tài),只有master節(jié)點才能修改集群的狀態(tài)信息
    • 集群狀態(tài)(cluster state)呜笑,維護了一個集群中必要的信息
      • 所有的節(jié)點信息
      • 所有的索引和與其相關(guān)的mapping和setting信息
      • 分片的路由信息
    • 任意加點都能修改信息會導(dǎo)致數(shù)據(jù)的不一致性

data node (數(shù)據(jù))和 coordinating node (協(xié)調(diào))

  • data node
    • 可以保存數(shù)據(jù)的節(jié)點夫否,叫做data node,負(fù)責(zé)保存分片數(shù)據(jù)叫胁。在數(shù)據(jù)拓展起到了至關(guān)重要的作用
  • coordinating node
    • 負(fù)責(zé)接受client的請求凰慈,將請求分發(fā)到合適的節(jié)點,最終把結(jié)果匯集到一起
    • 每個節(jié)點默認(rèn)都起到了coordinating node的職責(zé)

其他的節(jié)點類型

  • hot & warm node (冷熱節(jié)點)
    • 不同硬件配置的data node驼鹅,用來實現(xiàn)hot & warm 架構(gòu)微谓,降低集群成本
  • machine learning node
    • 負(fù)責(zé)跑機器學(xué)習(xí)的job,用來做異常檢測
  • tribe node
    • 5.3開始使用corss cluster search输钩,tribe node 鏈接到不同的elasticsearch集群豺型,并且支持將這些集群當(dāng)成一個單獨的集群處理

配置節(jié)點類型

在elasticsearch.yml中配置

  • 開發(fā)環(huán)境中一個節(jié)點可以承擔(dān)多種角色
  • 生產(chǎn)環(huán)境中應(yīng)該設(shè)置單一的角色的節(jié)點(dedicated node)
節(jié)點類型 配置參數(shù) 默認(rèn)值
master eligible node.master true
data node.data true
ingest node.ingest true
coordinating onlu 每個節(jié)點默認(rèn)都是coordinating節(jié)點,設(shè)置其他類型全部為false
machine learning node.ml true(需要enable x-pack)

分片(primary shard & replica shard)

  • 主分片买乃,用戶解決數(shù)據(jù)水平拓展的問題姻氨。通過主分片,可以將數(shù)據(jù)分布到集群內(nèi)的所有節(jié)點之上
    • 一個分片是一個運行的lucene實例
    • 主分片數(shù)在索引創(chuàng)建時指定剪验,后續(xù)不允許修改肴焊,除非reindex
  • 副本前联,用以解決數(shù)據(jù)高可用的問題。分片是主分片的拷貝
    • 副本分片數(shù)可以動態(tài)調(diào)整
    • 增加副本數(shù)抖韩,還可以在一定程度上提高服務(wù)的可用性(讀取的吞吐)
  • 一個三節(jié)點的集群中蛀恩,blogs索引的分片分部情況
    • 思考:增加一個節(jié)點活改大主分片數(shù)對系統(tǒng)的影響?
分片示例

分片的設(shè)定

  • 對于生產(chǎn)環(huán)境中分片的設(shè)定茂浮,需要提前做好容量規(guī)劃
  • 分片數(shù)設(shè)置過小
    • 導(dǎo)致后續(xù)無法增加節(jié)點實現(xiàn)水平拓展
    • 單個分片的數(shù)據(jù)量太大双谆,導(dǎo)致數(shù)據(jù)重新分配耗時
  • 分票數(shù)設(shè)置過大,7.0開始席揽,默認(rèn)主分片設(shè)置為1顽馋,解決了over-sharding的問題
    • 影響搜索結(jié)果的相關(guān)性打分,影響統(tǒng)計結(jié)果的準(zhǔn)確性
    • 單個節(jié)點上過多的分片幌羞,會導(dǎo)致資源的浪費寸谜,同時也會影響性能

查看集群的健康狀況

健康狀態(tài)
  • green - 主分片和副本都正常分配
  • yellow - 主分片全部正常分配,有副本分片未能正常分配
  • red - 有主分片未能分配
    • 如:服務(wù)器的磁盤容量超過85%時属桦,去創(chuàng)建了一個新的索引

demo

get _cluster/health
get _cat/nodes
get _cat/shards

get _cat/nodes?v
GET /_nodes/es7_01,es7_02
GET /_cat/nodes?v
GET /_cat/nodes?v&h=id,ip,port,v,m


GET _cluster/health
GET _cluster/health?level=shards
GET /_cluster/health/kibana_sample_data_ecommerce,kibana_sample_data_flights
GET /_cluster/health/kibana_sample_data_flights?level=shards

#### cluster state
The cluster state API allows access to metadata representing the state of the whole cluster. This includes information such as
GET /_cluster/state

#cluster get settings
GET /_cluster/settings
GET /_cluster/settings?include_defaults=true

GET _cat/shards
GET _cat/shards?h=index,shard,prirep,state,unassigned.reason
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載熊痴,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末聂宾,一起剝皮案震驚了整個濱河市果善,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌系谐,老刑警劉巖巾陕,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纪他,居然都是意外死亡鄙煤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門茶袒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梯刚,“玉大人,你說我怎么就攤上這事薪寓∏桑” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵预愤,是天一觀的道長。 經(jīng)常有香客問我咳胃,道長植康,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任展懈,我火速辦了婚禮销睁,結(jié)果婚禮上供璧,老公的妹妹穿的比我還像新娘。我一直安慰自己冻记,他們只是感情好睡毒,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冗栗,像睡著了一般演顾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上隅居,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天钠至,我揣著相機與錄音,去河邊找鬼胎源。 笑死棉钧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的涕蚤。 我是一名探鬼主播宪卿,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼万栅!你這毒婦竟也來了佑钾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤申钩,失蹤者是張志新(化名)和其女友劉穎次绘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撒遣,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡邮偎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了义黎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禾进。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖廉涕,靈堂內(nèi)的尸體忽然破棺而出泻云,到底是詐尸還是另有隱情,我是刑警寧澤狐蜕,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布宠纯,位于F島的核電站,受9級特大地震影響层释,放射性物質(zhì)發(fā)生泄漏婆瓜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望廉白。 院中可真熱鬧个初,春花似錦、人聲如沸猴蹂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽磅轻。三九已至珍逸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瓢省,已是汗流浹背弄息。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勤婚,地道東北人摹量。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像馒胆,于是被迫代替她去往敵國和親缨称。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容