天天看點

ES 06 - 通過Kibana插件操作ES中的索引文檔 (CRUD操作)

本文通過Kibana插件, 示範了Elasticsearch的基礎文法: 添加删除索引(index), 并對索引中的文檔(document)進行增删改次(CRUD)操作.

目錄

1 建立、删除索引

1.1 建立索引

2.2 删除索引

2 document的結構

3 添加文檔

4 查詢文檔

5 修改文檔

5.1 替換文檔

5.2 更新文檔

6 删除文檔

版權聲明

向ES中添加文檔時, ES會根據文檔中各個字段的類型, 自動推測并建立映射(mapping), 這是比Solr靈活的地方; 這在大部分情況下是可用的, 但生産環境中不建議如此使用: 應該根據業務需求定制mapping映射. 關于定制mapping, 請參考後續文章.
過時說明: 在建立索引時, Elasticsearch提出過時警告: 從7.0.0版本開始, 預設的Shard個數将從[5]變為[1]. 如果要繼續使用預設的[5]個分片(Shard), 就需要在建立Index時指定, 或者通過索引模闆建立Index. 關于建立Index時指定分片個數的方法, 參見後續的博文.

ES是一款面向文檔的資料搜尋、分析引擎. document結構說明:

(1) 基于面向對象的開發思想, 應用系統中的資料結構都是很複雜的: 對象中嵌套對象, 如CRM系統中的客戶對象中, 還會嵌入客戶相關的企業對象. (2) 對象資料存儲到資料庫中, 需要分解, 将嵌套對象分解為扁平的多張表資料, 每次操作時需要還原回對象格式, 過程繁瑣. (3) ES存儲的是JSON格式的文檔, 基于此, ES可以提供複雜的索引, 全文檢索, 分析聚合等功能. (4) document格式示例:
接下來以電商系統中的搜尋子系統為例, 示範對文檔的操作方法.

(1) 添加API:

說明: ES會自動建立PUT API中指定的index和type, 不需要提前建立; 而且ES預設對document的每個field都建立反向索引, 保證它們都可以被檢索.

(2) 添加示例:

(3) 添加之後的響應資訊:

(4) 再添加如下資料:

(1) 檢索API:

(2) 檢索示例:

(3) 檢索的結果:

(1) 替換API - 與添加API相同, 隻不過文檔id要存在, 此時系統将判定為修改操作:

—— 無論文檔資料是否存在修改, 對同一id的文檔執行1次以上的PUT操作, 都是修改操作.

注意: 替換方式的不便之處: 必須填寫要修改文檔的所有field, 如果缺少, 修改後的文檔中将丢失相關field.

(2) 替換示例 - 為name添加了"(第4版)"

(3) 替換的結果資訊:

(1) 更新API:

—— 通過<code>POST</code>和<code>_update</code>, 更新文檔中的特定字段(field), 其他的字段不會改動.

注意: 與替換方式相比, 更新方式的好處: 可以更新指定文檔的指定field, 未指定的field也不會丢失.

(2) 更新示例 - 将name改為英文:

(3) 更新的結果資訊:

此時檢視該文檔 <code>GET book_shop/it_book/1</code>, 可以發現更新成功.

(1) 删除API:

(2) 删除示例:

(3) 删除的結果資訊:

(4) 删除确認: 再次檢視删除的文檔:

(5) 确認的資訊:

為了後期示範的友善, 再次将該文檔添加至索引中:
感謝閱讀 本文版權歸部落客所有, 歡迎轉載, 但 [必須在文章頁面明顯位置标明原文連結], 否則部落客保留追究相關人員法律責任的權利.