圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

分享阿里 P8 高級架構師吐血總結的 《Java 核心知識體系&面試資料.pdf》

據說是阿里 P8 級高級架構師吐血總結的一份 Java 核心知識.pdf, 內容覆蓋很廣,Java 核心基礎、Java 多線程、高併發、Spring、微服務、Netty 與 RPC、Zookeeper、Kafka、RabbitMQ、Habase、設計模式、負載均衡、分佈式緩存、Hadoop、Spark、Storm、雲計算等。

另外,附送 100G 學習、面試視頻文檔喲~

獲取方式:【關注 + 轉發】後,私信我,回覆關鍵字【資源】,即可免費無套路獲取哦~

以下是資源的部分目錄以及內容截圖:

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

重要的事再說一遍,獲取方式:【關注 + 轉發】後,私信我,回覆關鍵字【資源】,即可免費無套路獲取哦~

正文開始

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

在 Elasticsearch 中,索引是一個非常重要的概念,它是具有相同結構的文檔集合。類比關係型數據庫,比如 Mysql, 你可以把它對標看成和同級別的概念。

今天小哈將帶著大家瞭解, 在 Elasticsearch 中,都是如何對索引進行操作的。

目錄

  • 一、創建索引
  • 二、刪除索引
  • 三、獲取索引信息
  • 四、打開/關閉索引

一、創建索引

1.1 開始創建索引

您可以通過 Elasticsearch 的 RESTFul API 來創建索引:

PUT http://127.0.0.1:9200/commodity

注意:默認情況下,創建的索引分片數量是 5 個,副本數量是 1 個。

您可以通過如下參數來指定分片數、副本數量:

{
 "settings": {
 "number_of_shards": 3,
 "number_of_replicas": 2
 }
}

1.1.1 實戰演示

通過 CURL 命令來上手操作一下,我們嘗試創建一個商品索引, 看下效果:

curl -X PUT "localhost:9200/commodity?pretty"

索引創建成功會返回以下出參:

{
 "acknowledged" : true,
 "shards_acknowledged" : true,
 "index" : "commodity"
}

如下圖所示:

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

1.2 創建帶有類型、映射的索引(Index)

其實,我們可以在創建索引的時候,同時將索引的類型、以及映射一併創建好:

curl -X PUT "localhost:9200/commodity?pretty"

入參:

{
 "settings": {
 "number_of_shards": 3,
 "number_of_replicas": 2
 },
 "mapping": {
 "_doc": {
 "properties": {
 "commodity_id": {
 "type": "long"
 },
 "commodity_name": {
 "type": "text"
 },
 "picture_url": {
 "type": "keyword"
 },
 "price": {
 "type": "double"
 }
 }
 }
 }
}

我們創建了一個分片數為 3,副本數為 2 的索引,同時,定義了一個 _doc 的類型,裡面包含了 4 個字段,類型各不相同。

接下來,我們用 Postman 工具來一次性創建帶有類型、映射的索引(Index):

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

這裡應為筆者通過 CURL 創建索引,由於帶入參,出現了格式錯誤的問題,改用了 Postman 工具,效果相同。

1.3 修改索引的副本數

我們可以通過如下 API 來修改索引的副本數:

PUT http://127.0.0.1:9200/commodity/_settings

入參:

{
 "number_of_replicas": 3
}

我們將 commodity 索引副本數更新為了 3:

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

二、刪除索引

2.1 開始刪除索引

通過如下 Elasticserach API 來刪除索引:

PUT http://127.0.0.1:9200/commodity

如上示例,刪除了名稱為 commodity 的索引。除了指定名稱刪除外,我們還可以通過索引別名或者通配符來刪除。

注意:要謹慎使用 _all 或 * 去刪除全部索引。

生產環境中,為了防止索引被誤刪,我們可以將 elasticsearch.yml 配置文件中的
action.destructive_requires_name 配置項設置為 true, 以達到強制使用索引名稱、別名才能刪除索引的效果。

2.2 實戰操作

接下來,我們通過 CURL 命令來刪除 commodity 索引:

curl -X DELETE "localhost:9200/commodity?pretty"
圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

三、獲取索引信息

3.1 通過具體索引名稱來獲取索引信息

通過 Elasticsearch 提供的接口,我們可以獲取一個或多個索引信息。

GET http://127.0.0.1:9200/commodity

這裡,我們用 CURL 命令來演示一下,來獲取 commodity 索引的具體信息:

curl -X GET http://127.0.0.1:9200/commodity?pretty

效果如下:

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

如圖所示,結果中包含了索引的映射信息,以及一些配置信息。

注意:若索引中是空的,也就是沒有一條文檔的話,映射(mapping)信息將是空的。

3.2 通過通配符來獲取索引信息

除了上面說到的,通過具體索引名稱來獲取索引信息外,我們還可以通過別名通配符來獲取。

通過通配符來或者 _all 或 * 來多個索引的信息。

3.3 添加篩選條件來獲取索引信息

我們可以在 URL 中指定篩選條件,只獲取自己想要的信息,比如只想要 commodity 索引的映射信息,操作如下:

GET http://127.0.0.1:9200/commodity/_mappings

通過 CURL 命令來演示下:

curl -X GET http://127.0.0.1:9200/commodity/_mappings?pretty
圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

可以看到,只返回了索引的映射信息。

如果你只想獲取索引的配置信息,通過如下接口即可:

GET http://127.0.0.1:9200/commodity/_settings
圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

四、打開/關閉索引

什麼是 Elasticsearch 打開/關閉索引? 先說說什麼是關閉索引?一旦索引被關閉,那麼這個索引只能顯示元數據信息,不能夠進行讀寫操作。

再說說打開索引就好理解了。就是打開被關閉的索引,允許進行讀寫操作。

通過 /{索引名}/_close 關閉索引
通過 /{索引名}/_open 打開索引

4.1 關閉索引

比如說,我們想關閉 commodity 索引:

POST http://127.0.0.1:9200/commodity/_close

CURL 命令如下:

curl -X POST http://127.0.0.1:9200/commodity/_close?pretty
圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

索引已經被關閉成功,這個時候,我們再向 commodity 添加一條文檔信息,看看結果如何:

圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

可以看到,返回了一個索引已被關閉的異常,文檔無法被正常創建。

4.2 打開索引

通過如下請求,我們可以打開一個被關閉的索引:

POST http://127.0.0.1:9200/commodity/_open

接下來,我們通過 CURL 命令來打開剛剛被關閉的 commodity 索引:

curl -X POST http://127.0.0.1:9200/commodity/_open?pretty
圖文教程帶您瞭解 Elasticsearch 中,如何進行索引管理

文檔被打開成功後,我們就可以愉快的對索引進行讀寫操作了。

五、最後

本文介紹了 Elasticsearch 索引管理相關的 API, 希望大家看完過後有所收穫。


分享到:


相關文章: