最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

袁庭新老師ES系列10節(jié)|使?kibana對?檔操作

2023-09-14 11:04 作者:袁庭新  | 我要投稿

前言

在前面的小節(jié)中,我們已經(jīng)給大家介紹了Elasticsearch中文檔的相關(guān)概念,想必有些同學(xué)都已經(jīng)忘記了,那我們一塊兒再來回顧下,文檔即索引庫中某個類型下的數(shù)據(jù),會根據(jù)規(guī)則創(chuàng)建索引,將來用來搜索??梢灶惐茸鰯?shù)據(jù)庫中的每一行數(shù)據(jù)。本章節(jié)袁老師繼續(xù)帶領(lǐng)同學(xué)們來探索Elasticsearch文檔操作的相關(guān)內(nèi)容。

一. 文檔增刪改查操作

1.新增文檔

1.1 新增文檔并隨機(jī)生成id

通過POST請求,可以向一個已經(jīng)存在的索引庫中添加文檔數(shù)據(jù)。

語法格式:

演示示例:

響應(yīng)結(jié)果:

演示效果見下:

另外,需要注意的是,在響應(yīng)結(jié)果中有一個_id字段,這個就是這條文檔數(shù)據(jù)的唯一標(biāo)識,以后的增刪改查都依賴這個id作為唯一標(biāo)識。

可以看到id的值為v0aZtYIBep1a4UbIQ74E,這里我們新增時沒有指定id,所以是ES幫我們隨機(jī)生成的id。

1.2 新增文檔并自定義id

如果我們想要自己新增的時候指定id,可以這么做。

語法格式:

演示示例:

響應(yīng)結(jié)果:

具體演示效果見下:

通過運行的響應(yīng)結(jié)果可以看出,新增的文檔數(shù)據(jù)的`_id`字段的取值為1,表明自定義分配id值生效。

2.查看文檔

根據(jù)Rest風(fēng)格,新增是POST,查詢是GET,不過查詢一般都需要條件,這里我們把剛剛生成數(shù)據(jù)的id帶上。

通過Kibana查看數(shù)據(jù):

響應(yīng)結(jié)果:

屬性說明:

自動生成的id,長度為20個字符,URL安全,Base64編碼,GUID(全局唯一標(biāo)識符)分布式系統(tǒng)并行生成時不可能會發(fā)生沖突。

在實際開發(fā)中不建議使用ES生成的id,太長且為字符串類型,檢索時效率低。建議將數(shù)據(jù)表中唯一的id,作為ES的文檔id。

3.修改數(shù)據(jù)

PUT表示修改文檔。不過修改必須指定id。分為以下兩種情況:

  • 如果id對應(yīng)的文檔存在,則修改。

  • 如果id對應(yīng)的文檔不存在,則新增。

比如我們使用id為2不存在的一個id,則是新增數(shù)據(jù):

響應(yīng)結(jié)果:可以看到輸出結(jié)果中的result屬性的取值為created ,表示是新增數(shù)據(jù)操作。

具體顯示效果見下:

我們再次執(zhí)行剛才的請求,不過把數(shù)據(jù)調(diào)整一下:

查看結(jié)果:可以看到輸出結(jié)果中的result屬性的取值為updated,表示是更新數(shù)據(jù)操作。

具體演示效果見下:

4.刪除數(shù)據(jù)

4.1 刪除數(shù)據(jù)操作

刪除使用DELETE請求,同樣需要根據(jù)id進(jìn)行刪除。語法格式:

DELETE /索引庫名/類型名/id值

演示示例:

響應(yīng)結(jié)果:

具體演示效果見下

4.2 刪除數(shù)據(jù)出錯問題

4.2.1 問題原因

在執(zhí)行刪除數(shù)據(jù)操縱提示如下錯誤。

經(jīng)查閱資料發(fā)現(xiàn),此問題是由于ES數(shù)據(jù)存儲磁盤剩余空間過少導(dǎo)致的。即ES存在一種flood_stage的機(jī)制。默認(rèn)的磁盤空間設(shè)置為95%,當(dāng)磁盤占用超過此值閾值時,將會觸發(fā)flood_stage機(jī)制,ES強(qiáng)制將各索引index.blocks.read_only_allow_delete設(shè)置為true,即ES索引均被設(shè)置為僅允許只讀只刪,不允許新增。

4.2.2 解決方法

1.在kibana中執(zhí)行以下命令。

說明:執(zhí)行完以后,無需重啟。

2.或者主機(jī)上直接執(zhí)行如下命令。

(1) 在主機(jī)上直接執(zhí)行此命令。

(2) 在主機(jī)上直接執(zhí)行此命令。

說明:以上兩種方式二選其一。

二. 智能判斷

剛剛我們在新增數(shù)據(jù)時,添加的字段都是提前在類型中定義過的,如果我們添加的字段并沒有提前定義過,能夠成功嗎?

事實上Elasticsearch非常智能,你不需要給索引庫設(shè)置任何mapping映射,它也可以根據(jù)你輸入的數(shù)據(jù)來判斷類型,動態(tài)添加數(shù)據(jù)映射。

演示示例:我們額外添加stock庫存、saleable是否上架、subTitle副標(biāo)題這3個字段。

響應(yīng)結(jié)果:

具體演示效果見下:

查詢yx索引庫:

響應(yīng)結(jié)果:

通過響應(yīng)結(jié)果可以發(fā)現(xiàn)stock、saleable、subTitle字段都被成功添加到了yx索引庫中的映射中。

在對subTitle字段做數(shù)據(jù)初始化的時候,設(shè)置的是字符串類型數(shù)據(jù),ES無法智能判斷,它就會存入兩種字段類型。例如:

  • subtitle:text類型

  • subtitle.keyword:keyword類型

這種智能映射,底層原理是動態(tài)模板映射,如果我們想修改這種智能映射的規(guī)則,其實只要修改動態(tài)模板即可。

三. 動態(tài)模板

1.動態(tài)模板介紹

動態(tài)模板允許您更好地控制Elasticsearch如何在默認(rèn)動態(tài)字段映射規(guī)則之外映射數(shù)據(jù)。通過將動態(tài)參數(shù)設(shè)置為true或runtime,可以啟用動態(tài)映射。然后,您可以使用動態(tài)模板定義自定義映射,這些映射可以應(yīng)用于基于匹配條件動態(tài)添加的字段:

  • match_mapping_type:對Elasticsearch檢測到的數(shù)據(jù)類型進(jìn)行操作。

  • matchunmatch :使用模式匹配字段名。

  • path_matchpath_unmatch:在字段的全點路徑上操作。

  • 如果動態(tài)模板未定義match_mapping_type、match或path_match,則不會匹配任何字段。您仍然可以在批量請求的dynamic_templates部分中按名稱引用模板。

在映射規(guī)范中使用{name}和{dynamic_type}模板變量作為占位符。

提醒:只有當(dāng)字段包含具體值時,才會添加動態(tài)字段映射。當(dāng)字段包含null或空數(shù)組時,Elasticsearch不會添加動態(tài)字段映射。如果在dynamic_template中使用了null_value選項,那么它只會在第一個具有該字段具體值的文檔被索引之后才會被應(yīng)用。

動態(tài)模板指定為命名對象數(shù)組:

1.模板名稱可以是任何字符串值。

2.匹配條件可以包括以下任一項:match_mapping_type、match、match_pattern、unmatchpath_match、path_unmatch。凡是符合條件的未定義字段,都會按照這個規(guī)則來映射。

3.匹配字段應(yīng)使用的映射。

2.動態(tài)模板案例

舉例,我們可以把所有未映射的string類型數(shù)據(jù)自動映射為keyword類型。

在這個案例中,我們定義了兩個映射配置:

  • title字段:統(tǒng)一映射為text類型,并制定分詞器。

  • 其它字段:只要是string類型,統(tǒng)一都處理為keyword類型。

這樣,未知的string類型數(shù)據(jù)就不會被映射為text和keyword并存,而是統(tǒng)一以keyword來處理。我們試試看新增一個數(shù)據(jù):

具體演示效果見下:

我們只對title做了配置,現(xiàn)在來看看images和price會被映射為什么類型。

響應(yīng)結(jié)果:

可以看到images被映射成了keyword,而非之前的text和keyword并存,說明我們的動態(tài)模板生效了。

四. 結(jié)語

這一章節(jié)的內(nèi)容比較多,趕緊趁熱打鐵復(fù)習(xí)下所學(xué)的內(nèi)容。首先,介紹了在ES中文檔的增刪改查的操作;然后,介紹了ES的智能判斷,動態(tài)添加數(shù)據(jù)映射。最后,介紹了ES中的動態(tài)模板相關(guān)的語法并進(jìn)行了案例演示。其中,涉及了一些語法和概念,需要去加深記憶和鞏固。這一章節(jié)的內(nèi)容,就給大家介紹到這里,那就期待袁老師的下一篇文章吧。

袁庭新老師ES系列10節(jié)|使?kibana對?檔操作的評論 (共 條)

分享到微博請遵守國家法律
九台市| 华宁县| 南丰县| 天峨县| 凉山| 西藏| 温泉县| 大厂| 皋兰县| 江城| 克什克腾旗| 集安市| 和林格尔县| 延安市| 卓尼县| 施秉县| 武隆县| 芒康县| 蕉岭县| 友谊县| 库尔勒市| 织金县| 西华县| 环江| 望奎县| 精河县| 阿巴嘎旗| 板桥市| 梁平县| 新竹县| 霍州市| 自治县| 遂昌县| 灵台县| 横峰县| 福海县| 九江县| 丹寨县| 同仁县| 香河县| 晋江市|