【Elasticsearch】Elasticsearch索引創建與管理詳解

文章目錄

  • 📑引言
  • 一、Elasticsearch 索引的基礎概念
  • 二、創建索引
    • 2.1 使用默認設置創建索引
    • 2.2 自定義設置創建索引
    • 2.3 創建索引并設置映射
  • 三、索引模板
    • 3.1 創建索引模板
    • 3.2 使用索引模板創建索引
  • 四、管理索引
    • 4.1 查看索引
    • 4.2 更新索引設置
    • 4.3 刪除索引
  • 五、索引別名
    • 5.1 創建索引別名
    • 5.2 使用別名查詢
    • 5.3 更新索引別名
  • 六、分片和副本管理
    • 6.1 分片
    • 6.2 副本
  • 七、索引性能優化
    • 7.1 分片數量的選擇
    • 7.2 動態調整副本
    • 7.3 索引刷新間隔
  • 八、索引模板的高級應用
  • 九、索引管理工具
    • 9.1 Kibana
    • 9.2 Curator

封面.png

📑引言

Elasticsearch 是一個基于 Apache Lucene 的開源搜索引擎,具有分布式、近實時、RESTful API 等特點。索引是 Elasticsearch 的核心概念之一,索引的創建和管理是使用 Elasticsearch 的基礎技能。本文將詳細介紹 Elasticsearch 索引的創建與管理,包括索引的基礎概念、創建索引、索引模板、映射和索引別名等內容。

一、Elasticsearch 索引的基礎概念

在 Elasticsearch 中,索引類似于傳統數據庫中的數據庫。一個索引包含了多個文檔,而每個文檔都包含了多個字段。以下是一些關鍵概念:

  • 文檔(Document):Elasticsearch 中的數據單位,類似于數據庫中的一行數據。
  • 索引(Index):包含多個文檔,類似于數據庫中的數據庫。
  • 類型(Type):在較早版本的 Elasticsearch 中,索引中的一種邏輯劃分,現已棄用。
  • 分片(Shard):索引可以分為多個分片,以實現水平擴展和高可用性。
  • 副本(Replica):分片的備份,以提高數據的容錯能力。

二、創建索引

2.1 使用默認設置創建索引

Elasticsearch 提供了簡單的創建索引的方法,只需發送一個 HTTP 請求即可。

PUT /my_index

這個命令將在 Elasticsearch 中創建一個名為 my_index 的索引,使用默認的設置和映射。

2.2 自定義設置創建索引

可以在創建索引時自定義分片、副本和其他設置。

PUT /my_index
{"settings": {"number_of_shards": 3,"number_of_replicas": 2}
}

這將創建一個名為 my_index 的索引,包含 3 個主分片和 2 個副本。

2.3 創建索引并設置映射

映射定義了索引中字段的類型及其屬性,可以在創建索引時一起定義。

PUT /my_index
{"settings": {"number_of_shards": 3,"number_of_replicas": 2},"mappings": {"properties": {"name": {"type": "text"},"age": {"type": "integer"},"created_at": {"type": "date","format": "yyyy-MM-dd"}}}
}

這個命令創建了一個索引,并定義了三個字段:name(文本類型)、age(整數類型)和 created_at(日期類型)。

三、索引模板

索引模板允許你為符合特定模式的索引設置默認配置和映射,當索引名稱符合模板定義的模式時,會自動應用模板中的設置和映射。

3.1 創建索引模板

PUT /_template/my_template
{"index_patterns": ["my_index_*"],"settings": {"number_of_shards": 1},"mappings": {"properties": {"name": {"type": "text"},"age": {"type": "integer"}}}
}

這個模板將應用于所有以 my_index_ 開頭的索引,并自動設置其分片數量和映射。

3.2 使用索引模板創建索引

當創建符合模板模式的索引時,模板會自動應用:

PUT /my_index_2024

這個命令將創建一個名為 my_index_2024 的索引,并應用 my_template 中定義的設置和映射。

四、管理索引

4.1 查看索引

可以使用以下命令查看索引的詳細信息:

GET /my_index

這個命令將返回索引的配置信息和狀態。

4.2 更新索引設置

索引創建后,可以動態更新一些設置,例如副本數量:

PUT /my_index/_settings
{"number_of_replicas": 1
}

4.3 刪除索引

可以使用以下命令刪除索引:

DELETE /my_index

這個命令將刪除 my_index 索引及其所有數據。

五、索引別名

索引別名允許你為一個或多個索引創建別名,以便于查詢和管理。

5.1 創建索引別名

POST /_aliases
{"actions": [{"add": {"index": "my_index","alias": "my_index_alias"}}]
}

這個命令為 my_index 創建了一個別名 my_index_alias

5.2 使用別名查詢

GET /my_index_alias/_search
{"query": {"match_all": {}}
}

這個查詢將通過別名 my_index_alias 查詢 my_index 中的所有文檔。

5.3 更新索引別名

可以動態更新別名,例如將別名指向另一個索引:

POST /_aliases
{"actions": [{"remove": {"index": "my_index","alias": "my_index_alias"},"add": {"index": "new_index","alias": "my_index_alias"}}]
}

這個命令將 my_index_aliasmy_index 移除,并指向 new_index

六、分片和副本管理

6.1 分片

分片是 Elasticsearch 用于水平擴展和分布式存儲的基本單位。每個索引可以分為多個主分片(Primary Shard),每個主分片可以有多個副本分片(Replica Shard)。分片的數量在索引創建時設置,并且一旦設置就不能更改,但副本數量可以動態調整。
分片的優點包括:

  • 擴展性:可以將數據分布到多個節點上,提高存儲和處理能力。
  • 高可用性:通過副本分片提供容錯能力,當主分片失效時,副本分片可以提升為主分片。

6.2 副本

副本分片是主分片的完整拷貝,用于提供高可用性和讀取性能。當一個節點失效時,副本分片可以確保數據不會丟失并繼續提供服務。

七、索引性能優化

7.1 分片數量的選擇

在創建索引時,選擇適當的分片數量是優化索引性能的關鍵。過多的分片會導致資源浪費,過少的分片會導致性能瓶頸。可以根據數據量和節點數量來合理設置分片數量。

7.2 動態調整副本

在讀多寫少的場景中,可以增加副本數量以提高讀取性能。在寫多讀少的場景中,可以減少副本數量以提高寫入性能和減少開銷。

7.3 索引刷新間隔

默認情況下,Elasticsearch 每秒會刷新一次索引,將新數據寫入磁盤。在批量寫入數據時,可以適當增加刷新間隔以提高寫入性能,減少 I/O 開銷。

PUT /my_index/_settings
{"index": {"refresh_interval": "30s"}
}

八、索引模板的高級應用

動態模板
動態模板允許根據字段名稱或數據類型自動應用特定的映射規則,適用于需要靈活處理不同字段的情況。

PUT /_template/dynamic_template_example
{"index_patterns": ["dynamic_*"],"mappings": {"dynamic_templates": [{"strings_as_keywords": {"match_mapping_type": "string","mapping": {"type": "keyword"}}}]}
}

這個動態模板會將所有以 dynamic_ 開頭的索引中的字符串字段映射為 keyword 類型。

九、索引管理工具

9.1 Kibana

Kibana 是 Elasticsearch 的數據可視化和管理工具,提供了直觀的界面來管理和查詢 Elasticsearch 索引。可以通過 Kibana 查看索引狀態、執行查詢和分析數據。

9.2 Curator

Curator 是 Elasticsearch 的索引管理工具,提供了一組命令行工具來管理索引生命周期。可以使用 Curator 定期刪除舊索引、優化索引和管理快照。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38548.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38548.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38548.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Go-知識測試-性能測試

Go-知識測試-性能測試 1. 定義2. 例子3. testing.common 測試基礎數據4. testing.TB 接口5. 關鍵函數5.1 testing.runBenchmarks5.2 testing.B.runN5.3 testing.B.StartTimer5.4 testing.B.StopTimer5.5 testing.B.ResetTimer5.6 testing.B.Run5.7 testing.B.run15.8 testing.B…

監聽藍牙對話的BlueSpy技術復現

本文是之前文章的BlueSpy技術的復現過程:https://mp.weixin.qq.com/s/iCeImLLPAwwKH1avLmqEpA 2個月前,網絡安全和情報公司Tarlogic在西班牙安全大會RootedCon 2024上提出了一項利用藍牙漏洞的BlueSpy技術,并在之后發布了一個名為BlueSpy的概…

深度學習之生成對抗網絡StyleGAN3

StyleGAN3 是由 NVIDIA 團隊提出的第三代生成對抗網絡(GAN),在前代 StyleGAN 和 StyleGAN2 的基礎上進行了改進,以實現更高質量的圖像生成。StyleGAN3 的主要改進在于解決了 StyleGAN2 中存在的偽影(artifacts)問題,并且提升了生成圖像的一致性和穩定性。 StyleGAN3 的…

git 提交代碼忽略eslint代碼檢測

在暫存代碼的時候會出現以上情況因為在提交代碼的時候會默認運行代碼進行檢測,如果不符合代碼規范就會進行報錯 解決: 使用 git commit --no-verify -m xxx 忽略eslint的檢測

Laravel 謹慎使用Storage::append()

在 driver 為 local 時,Storage::append()在高并發下,會存在丟失數據問題,文件被覆寫,而非尾部添加,如果明確是本地文件操作,像日志寫入,建議使用 Illuminate\Filesystem\Filesystem或者php原生…

技術成神之路:設計模式(一)單例模式

在軟件設計中,有時我們希望某個類的實例始終是唯一的,即無論在何處訪問這個類,都能夠得到同一個實例。單例模式(Singleton Pattern)就是為了解決這個問題而產生的。單例模式確保一個類只有一個實例,并提供一…

整合web-socket的常見bug

整合文章連接 此文是記錄我上網查找整合方案時候踩的坑,特別是注冊失敗的問題,比如還有什么去掉Compoent就可以,但是這樣這個端點就失效了 特別是報錯: at org.springframework.web.socket.server.standard.ServerEndpointExporter.registerEndpoint(ServerEndpointExporter.…

大模型日報 2024-06-30

大模型日報 2024-06-30 大模型產品 Briefy: AI知識助手 摘要: Briefy是一款AI知識助手,為專業用戶簡化每日信息消費,將復雜信息提煉成結構化摘要,組織成知識庫,并以自然語言按需檢索。 Claude Projects:組織聊天與共享…

邀請函 | 極限科技全新搜索引擎 INFINI Pizza 亮相 2024 可信數據庫發展大會!

過去一年,在全球 AI 浪潮和國家數據局成立的推動下,數據庫產業變革不斷、熱鬧非凡。2024 年,站在中國數字經濟產業升級和數據要素市場化建設的時代交匯點上,“2024 可信數據庫發展大會” 將于 2024 年 7 月 16-17 日在北京悠唐皇冠…

肆拾玖坊的商業模式,49坊新零售獎金制度體系,眾籌眾創+會員制

肆拾玖坊之所以能夠在短時間內成為白酒行業的“現象級”企業,,不僅是依靠獨特商業模式,同時也依靠的是堅持用戶為核心,圍繞用戶需求,讓用戶與產品直接產生連接理念。 坐標:廈門,我是易創客肖琳 深耕社交新零售行業10年,主要提供新零售系統工…

前端技術(二)——javasctipt 介紹

一、javascript基礎 1. javascript簡介 ⑴ javascript的起源 ⑵ javascript 簡史 ⑶ javascript發展的時間線 ⑷ javascript的實現 ⑸ js第一個代碼 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>…

Vue中的axios深度探索:從基礎安裝到高級功能應用的全面指南

文章目錄 前言一、axios 請求1. axios的概念2. axios的安裝3. axiso請求方式介紹4. axios請求本地數據5. axios跨域6. axios全局注冊7. axios支持的請求類型1&#xff09;get請求2&#xff09;post請求3&#xff09;put請求4&#xff09;patch請求5&#xff09;delete請求 二、…

MyBatis操作數據庫(入門)

本節目標 使用MyBatis完成簡單的增刪改查操作&#xff0c;參數傳遞掌握MyBatis的兩種寫法&#xff1a;注解和XML方式掌握MyBatis相關的日志配置 前言 在應用分層學習中&#xff0c;我們了解web應用程序一般分為三層&#xff0c;即Controller、Service、Dao。在之前的案例中&a…

化學SCI期刊,中科院4區,易錄用,幾乎不退稿

一、期刊名稱 Chemical Papers 二、期刊簡介概況 期刊類型&#xff1a;SCI 學科領域&#xff1a;化學 影響因子&#xff1a;2.1 中科院分區&#xff1a;4區 三、期刊征稿范圍 該雜志致力于基礎和應用化學和化學工程研究。它的范圍很廣&#xff0c;涵蓋了所有化學科學&…

2024年江蘇智能制造工廠名單:我看出了未來擇業和跳槽方向

導語 大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。 新書《智能物流系統構成與技術實踐》 在當今這個飛速發展的時代&#xff0c;智能制造已成為推動工業進步的強大引擎。隨著技術革新的浪潮一波接一波地涌來&#xff0c;我們不禁要問&a…

動手學深度學習(Pytorch版)代碼實踐 -計算機視覺-49風格遷移

49風格遷移 讀入內容圖像&#xff1a; import torch import torchvision from torch import nn import matplotlib.pylab as plt import liliPytorch as lp from d2l import torch as d2l# 讀取內容圖像 content_img d2l.Image.open(../limuPytorch/images/rainier.jpg) plt.…

使用 Swift 遞歸搜索目錄中文件的內容,同時支持 Glob 模式和正則表達式

文章目錄 前言項目設置查找文件讀取CODEOWNERS文件解析規則搜索匹配的文件確定文件所有者輸出結果總結前言 如果你新加入一個團隊,想要快速的了解團隊的領域和團隊中擁有的代碼庫的詳細信息。 如果新團隊中的代碼庫在 GitHub / GitLab 中并且你不熟悉代碼所有權模型的概念或…

Unity開箱即用的UGUI面板的拖拽移動功能

文章目錄 &#x1f449;一、背景&#x1f449;二、效果圖&#x1f449;三、原理&#x1f449;四、核心代碼&#x1f449;五&#xff0c;總結 &#x1f449;一、背景 之前做PC項目時常常有面板拖拽移動的需求&#xff0c;今天總結封裝一下&#xff0c;做成一個隨時隨地可復用的…

More Effective C++ 35個改善編程與設計的有效方法筆記與心得 3

三. 異常 條款9&#xff1a; 利用destructors避免泄露資源 ????  在編程中&#xff0c;"資源"可以指任何系統級的有限資源&#xff0c;如內存、文件句柄、網絡套接字等。"泄露"則是指在應用程序中分配了資源&#xff0c;但在不再需要這些資源時沒有…

Linux 安裝 Redis 教程

優質博文&#xff1a;IT-BLOG-CN 一、準備工作 配置gcc&#xff1a;安裝Redis前需要配置gcc&#xff1a; yum install gcc如果配置gcc出現依賴包問題&#xff0c;在安裝時提示需要的依賴包版本和本地版本不一致&#xff0c;本地版本過高&#xff0c;出現如下問題&#xff1a…