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

歡迎關注筆者的公衆號: 小哈學Java, 每日推送 Java 領域乾貨文章!!sql

我的網站: www.exception.site/essay/about…數據庫

在 Elasticsearch 中,索引是一個很是重要的概念,它是具備相同結構的文檔集合。類比關係型數據庫,好比 Mysql, 你能夠把它對標當作和同級別的概念。json

今天小哈將帶着你們瞭解, 在 Elasticsearch 中,都是如何對索引進行操做的。微信

目錄

  • 1、建立索引
  • 2、刪除索引
  • 3、獲取索引信息
  • 4、打開/關閉索引

1、建立索引

1.1 開始建立索引

您能夠經過 Elasticsearch 的 RESTFul API 來建立索引:app

PUT http://127.0.0.1:9200/commodity
複製代碼

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

您能夠經過以下參數來指定分片數、副本數量:elasticsearch

{
	"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"
}
複製代碼

以下圖所示:網站

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):

這裏應爲筆者經過 CURL 建立索引,因爲帶入參,出現了格式錯誤的問題,改用了 Postman 工具,效果相同。

1.3 修改索引的副本數

咱們能夠經過以下 API 來修改索引的副本數:

PUT http://127.0.0.1:9200/commodity/_settings
複製代碼

入參:

{
	"number_of_replicas": 3
}
複製代碼

咱們將 commodity 索引副本數更新爲了 3:

2、刪除索引

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"
複製代碼

3、獲取索引信息

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

經過 Elasticsearch 提供的接口,咱們能夠獲取一個或多個索引信息。

GET http://127.0.0.1:9200/commodity
複製代碼

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

curl -X GET http://127.0.0.1:9200/commodity?pretty
複製代碼

效果以下:

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

注意:若索引中是空的,也就是沒有一條文檔的話,映射(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
複製代碼

能夠看到,只返回了索引的映射信息。

若是你只想獲取索引的配置信息,經過以下接口便可:

GET http://127.0.0.1:9200/commodity/_settings
複製代碼

4、打開/關閉索引

什麼是 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
複製代碼

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

能夠看到,返回了一個索引已被關閉的異常,文檔沒法被正常建立。

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
複製代碼

文檔被打開成功後,咱們就能夠愉快的對索引進行讀寫操做了。

5、最後

本文介紹了 Elasticsearch 索引管理相關的 API, 但願你們看完事後有所收穫。

歡迎關注微信公衆號: 小哈學Java

關注筆者的微信公衆號: 小哈學Java, 每日第一時間推送乾貨文章, 另外, 筆者我的吐血整理了 100G 的學習資料, 關注回覆「666」便可免費無套路領取喲~

關注微信公衆號【小哈學Java】,回覆【資源】,便可免費無套路領取資源連接哦
相關文章
相關標籤/搜索