1. 程式人生 > >一文帶您瞭解 Elasticsearch 中,如何進行索引管理(圖文教程)

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

歡迎關注筆者的公眾號: 小哈學Java, 每日推送 Java 領域乾貨文章,關注即免費無套路附送 100G 海量學習、面試資源喲!!

個人網站: https://www.exception.site/essay/about-elasticsearch-index-manage

在 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"
}

如下圖所示:

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.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.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

四、開啟/關閉索引

什麼是 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

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

五、最後

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

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

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

相關推薦

瞭解 Elasticsearch 如何進行索引管理圖文教程

歡迎關注筆者的公眾號: 小哈學Java, 每日推送 Java 領域乾貨文章,關注即免費無套路附送 100G 海量學習、面試資源喲!! 個人網站: https://www.exception.site/essay/about-elasticsearch-index-manage 在 Elasticsea

瞭解js資料儲存及深複製深拷貝與淺複製(淺拷貝)

## 背景 在日常開發中,偶爾會遇到需要複製物件的情況,需要進行物件的複製。 由於現在流行標題黨,所以,一文帶你瞭解js資料儲存及深複製(深拷貝)與淺複製(淺拷貝) ## 理解 首先就需要理解 js 中的資料型別了 js 資料型別包含 1. `基礎型別`:`String`、`Number`、 `nul

【併發程式設計】你讀懂深入理解Java記憶體模型面試必備

併發程式設計這一塊內容,是高階資深工程師必備知識點,25K起如果不懂併發程式設計,那基本到頂。但是併發程式設計內容龐雜,如何系統學

原創 | 手摸手學會 Elasticsearch 單機、叢集、外掛安裝(圖文教程)

歡迎關注筆者的公眾號: 小哈學Java, 每日推送 Java 領域乾貨文章,關注即免費無套路附送 100G 海量學習、面試資源喲!! 個人網站: https://www.exception.site/essay/elasticsearch-single-cluster-plugin-install 目

函式從編輯到編譯 (下) -- 瞭解編譯 連結

上篇的連結在這裡: 函式,從編輯到編譯 (上) --帶你瞭解預編譯做了什麼 下面繼續: 2. 編譯 所謂編譯過程,就是把預處理完的檔案進行一系列詞法分析,語法分析,語義分析及優化後生產相應的彙編程式碼檔案。這一步是整個程式構建的核心部分,也是最容易出錯的一部分。 從現在開始,步驟就變得十分複雜了。 對函式來說

Spring Boot 第三彈瞭解日誌如何配置?

前言 日誌通常不會在需求階段作為一個功能單獨提出來,也不會在產品方案中看到它的細節。但是,這絲毫不影響它在任何一個系統中的重要的地位。 今天就來介紹一下Spring Boot中的日誌如何配置。 Spring Boot 版本 本文基於的Spring Boot的版本是2.3.4.RELEASE。 日誌級別 幾種常

瞭解求職面試那些名詞乾貨

喬兄剛剛經歷了19秋招,收穫了百度offer,馬上要迎來了19春招,有很多公眾號的粉絲經常會問今年不是2018年嗎,你咋就已經完成了2018校招了?由於被很多人經常問起,下面喬兄給大家普及一下跟校招相關的名詞。 現在時間是北京時間 2018.11.15,請務必根據現在的時間去推測你的情況。 201

瞭解 Raft 一致性協議的關鍵點

此文已由作者孫建良授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 Raft 協議的釋出,對分散式行業是一大福音,雖然在核心協議上基本都是師繼 Paxos 祖師爺(lamport) 的精髓,基於多數派的協議。但是 Raft 一致性協議的貢獻在於,定義了可易於實現的一致性協議

你看懂cookie面試前端不用愁

本文由雲+社群發表 在前端面試中,有一個必問的問題:請你談談cookie和localStorage有什麼區別啊? localStorage是H5中的一種瀏覽器本地儲存方式,而實際上,cookie本身並不是用來做伺服器儲存的。但在 localStorage 出現之前,cookie被濫用當做了儲存工具,什麼資

瞭解程序

現代計算機體系結構 馮·諾依曼結構 要了解程序的概念得先從計算機的體系結構說起,首先了解一些世界上用得最多的計算機體系結構:馮·諾依曼結構(還有其他的計算機體系結構:如哈佛結構) 馮·諾曼結構處理器具有以下幾個特點:必須有一個儲存器;必須有一個控制器;必須有一

你理解JavaLock的實現原理

當多個執行緒需要訪問某個公共資源的時候,我們知道需要通過加鎖來保證資源的訪問不會出問題。java提供了兩種方式來加鎖,一種是關鍵字:synchronized,一種是concurrent包下的lock鎖。synchronized是java底層支援的,而concurrent包

瞭解 Vim 的起源

我最近偶然發現了一種名為 Intel HEX 的檔案格式。據我所知,Intel HEX 檔案(使用.hex 副檔名)通過將二進位制影象編碼成十六進位制數字行,使二進位制影象不那麼晦澀難懂。顯然,當人們需要對微控制器進行程式設計或者將資料燒錄進 ROM 時會用到這種檔

瞭解Java Agent

Java Agent這個技術,對於大多數同學來說都比較陌生,但是多多少少又接觸過,實際上,我們平時用的很多工具,都是基於Java Agent實現的,例如常見的熱部署JRebel,各種線上診斷工具(btrace, greys),還有阿里最近開源的arthas。 其實Java

瞭解爬蟲

六月分享主題:爬蟲HTTP詳解網頁結構簡介 前段時間我媽突然問我:兒子,爬蟲是什麼?我當時既驚訝又尷尬,驚訝的是為什麼我媽會對爬蟲好奇?尷尬的是我該怎麼給她解釋呢? 一、爬蟲介紹 1.爬蟲是什麼 網路爬蟲(web crawler 簡稱爬蟲)就是按照一定規則從網際網路上抓取資訊的程式,既然是程式那和

瞭解git

git簡介 什麼是git? git是當今世界上最先進的分散式的版本控制系統。 版本控制系統分集中式的和分散式的,集中式的主要代表有CVS、SVN,而Git是分散式版本控制系統的佼佼者。 那什麼是集中式、什麼是分散式的? 上圖,一圖勝千言 圖片來自git官網 集中式版本控制系統如圖所示: 特點: 版本

你實現遊戲的音樂、音效設定

在遊戲開發過程中,背景音樂和音效的設定總是繞不過的,今天就來帶大家實現一個簡單的背景音樂和音效的設定邏輯。   1.首先將音樂資源和圖片資源都匯入到工程中(公眾號後臺回覆「AudioTest」可獲得完整工程,圖片和音樂資源來自關東昇老師《Cocos2d-x實戰》,侵刪。):  

瞭解 OAuth2 協議與 Spring Security OAuth2 整合!

OAuth 2.0 允許第三方應用程式訪問受限的HTTP資源的授權協議,像平常大家使用Github、Google賬號來登陸其他系統時使用的就是 OAuth 2.0 授權框架,下圖就是使用Github賬號登陸Coding系統的授權頁面圖: 類似使用 OAuth 2.0 授權的還有很多,本文將介紹 OAuth

瞭解 HTTP 黑科技

這是 HTTP 系列的第三篇文章,此篇文章為 HTTP 的進階文章。 在前面兩篇文章中我們講述了 HTTP 的入門,HTTP 所有常用標頭的概述,這篇文章我們來聊一下 HTTP 的一些 黑科技。 HTTP 內容協商 什麼是內容協商 在 HTTP 中,內容協商是一種用於在同一 URL 上提供資源的不同表示形式的

瞭解 C# DLR 的世界

一文帶你瞭解 C# DLR 的世界 在很久之前,我寫了一片文章dynamic結合匿名型別 匿名物件傳參,裡面我以為DLR內部是用反射實現的。因為那時候是心中想當然的認為只有反射能夠在執行時解析物件的成員資訊並呼叫成員方法。後來也是因為其他的事一直都沒有回過頭來把這一節知識給補上,正所謂亡羊補牢,讓我們現在來大

瞭解微信/支付寶支付的相關概念

今天寫了一篇非技術文,需求來源於老大的老大,老老大。 這偏文章用以說明微信/支付寶相關引數之間錯綜複雜的關係,所有資料來自微信/支付寶官網,以及相關銀聯給的微信/支付寶對接文件。 嘿嘿,如果同行的小夥伴,也有這個疑惑,希望本篇文章幫你解惑。 ## 微信 名詞解釋: - **appid**:公眾號、小