成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

提升 Elasticsearch 索引性能 TOP 十小技巧,你用到幾個?

開發 前端
Elasticsearch 是處理大規模數據的必備工具,但要充分發揮其性能,必須優化索引過程。通過遵循上述 10 個技巧,你可以顯著提升 Elasticsearch 的索引效率,從而提高搜索和分析的能力。?

Elasticsearch 是一個功能強大的搜索和分析引擎,能夠快速存儲、搜索和分析海量數據。

在 Elasticsearch 的核心組件中,索引性能至關重要。索引(動詞)過程負責將數據添加到 Elasticsearch 中,而索引性能的好壞直接影響到搜索查詢的效率。

本文將分享提升 Elasticsearch 索引性能的 10 個實用技巧,幫助大家更高效地使用 Elasticsearch。

你一共用到幾個?有沒有更好的使用小技巧?歡迎留言補充交流。

1. 選擇合適的硬件

要提升 Elasticsearch 的索引性能,首先需要確保硬件配置到位。

Elasticsearch 對內存 (RAM)、CPU 和 磁盤 I/O 的依賴性較高,因此選擇合適的硬件至關重要。建議選擇具備充足內存和 CPU 資源的服務器,并優先使用 SSD 磁盤以提高磁盤 I/O 性能,從而減少索引時間。

Elasticsearch 官方文檔強調:

  • 搜索性能受存儲和計算資源的影響較大。如果搜索受限于I/O,建議增大文件系統緩存或使用更快的存儲設備(如SSD);
  • 若受限于CPU,則應使用更快的處理器。
  • 相比遠程存儲,本地直連存儲通常性能更佳,配置更簡單,延遲更低。遠程存儲在高負載下性能可能較差,但經過優化后也能達到可接受的效果。
  • 在確定存儲架構前,應通過基準測試評估實際負載下的性能,并根據需要與供應商合作進行調優。https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-search-speed.html

2. 使用 Bulk API 批量索引

Elasticsearch 提供了一個 Bulk API,允許在單次請求中索引多個文檔。與一次索引一個文檔相比,批量索引能顯著提高性能,因為減少了網絡往返的開銷,提高了索引過程的效率。

Elasticsearch 官方文檔強調:

  • 建議在單節點、單分片上進行基準測試,逐步增加批量請求的文檔數量(100、200、400等)以找到最佳批量大小。

圖片圖片

圖示僅供參考遞增批量值

  • 當索引速度趨于平穩時,即為最佳值。
  • 若數據量相近,寧可選擇較小批次,以避免內存壓力。
  • 通常批量請求不宜超過幾十 MB,否則可能會對集群造成內存負擔。

3. 在批量索引時禁用刷新

Elasticsearch 默認每秒刷新索引一次,這意味著每次添加新文檔后,索引會立即可搜索。

然而,在批量索引時,這種行為會顯著降低索引性能。

在進行大量數據寫入時,可以暫時禁用自動刷新,待批量索引完成后再啟用。

# 禁用刷新
PUT /my_index/_settings
{
  "refresh_interval": "-1"
}

# 完成批量索引后重新啟用
PUT /my_index/_settings
{
  "refresh_interval": "30s"
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-indexing-speed.html

4. 調整刷新間隔

除了在批量索引時禁用刷新外,還可以通過增加默認的刷新間隔來提升索引性能。減少 Elasticsearch 每秒的刷新次數,可以降低系統的開銷,從而提高索引速度。

不過,需要注意的是,刷新間隔增加后,新添加的文檔不會立即可見,因此在某些實時性要求較高的場景中需要謹慎調整。

正確做法建議:在數據加載階段將 refresh_interval 設置為較高值,例如 30s,完成后再恢復到默認值 1s。

5. 優化文檔設計

文檔的設計對索引性能有很大影響。避免使用過于龐大和復雜的文檔,盡量減少嵌套字段的使用,尤其是深層嵌套結構,因為它們會顯著降低索引速度。

干貨 | Elasticsearch 索引設計實戰指南

Elasticsearch Nested 選型,先看這一篇!

正確做法:

  • 盡量減少文檔大小(不要過大,比如:一本書導入一個文檔),避免過多的嵌套。
  • 僅保留必要的字段,避免存儲多余信息。

6. 減少索引的字段數量

過多的字段會顯著增加索引的時間,因為 Elasticsearch 需要對每個字段進行分析和映射。

僅索引需要用于搜索的字段,其余字段可以設置為 index: false。

PUT /my_index
{
  "mappings": {
    "properties": {
      "description": { "type": "text" },
      "comments": { "type": "text", "index": false } # 不需要搜索的字段
    }
  }
}

正確做法建議:減少不必要的字段,僅對需要搜索和聚合的字段進行索引。

7. 優化磁盤性能

Elasticsearch 的主分片數據會寫入節點的文件系統,因此磁盤速度對索引性能有重要影響。

選擇速度快、容量大的磁盤,如 SSD,可以顯著提升索引效率。——多么正確的廢話!但是很多咨詢的球友企業不提供硬件支撐,在機械磁盤做再足優化也無濟于事。

圖片

圖示僅為方便大家直觀認知

正確做法建議:盡量使用 NVMe SSD,尤其是在處理大量日志或時間序列數據時。

8. 索引生命周期 ILM 管理

當一個索引過大時,管理起來會變得困難,導致搜索和索引性能下降。可以考慮將索引分為每日或每周的索引,這在處理時間序列數據(如日志事件)時尤其有用。

Elasticsearch ILM 索引生命周期管理常見坑及避坑指南

視頻 | Elasticsearch ILM索引生命周期管理

干貨 | Elasticsearch 索引生命周期管理 ILM 實戰指南

干貨 | Elasticsearch索引生命周期管理探索(rollover 5.X 版本階段)

圖片圖片

正確做法:

對于日志數據,使用按日期滾動的索引,如

logs-2024-11-01、
logs-2024-11-02。

定期刪除過期的索引以釋放存儲空間。

9. 防止映射爆炸

如果使用動態映射,可能會導致字段數量過多,從而引發映射爆炸的問題。

建議定義顯式映射來控制字段數量,避免自動檢測新字段。

PUT /my_index
{
  "mappings": {
    "dynamic": "strict", # 禁止自動添加字段
    "properties": {
      "user": { "type": "keyword" },
      "message": { "type": "text" }
    }
  }
}

正確做法:使用 dynamic: strict 控制自動映射。

定期清理不再使用的字段。

10. 優化 Translog 性能

在Elasticsearch 8.x中,調整translog(事務日志)設置可以提高性能和數據持久性。主要設置包括:

translog的持久性(index.translog.durability)、

同步間隔(index.translog.sync_interval)、

刷新閾值大?。╥ndex.translog.flush_threshold_size)。

通過合理配置這些參數,可以在保證數據安全的同時,優化系統性能。

以下是優化 Elasticsearch 8.x 中 Translog 性能的推薦配置:

參數名稱

含義

性能優先配置

數據安全優先配置

index.translog.durability

控制 Translog 的持久性方式。

async

request

index.translog.sync_interval

定義 Translog 異步刷新的時間間隔(僅在 async 模式下有效)。

10s

5s(在 request 模式下無效)

index.translog.flush_threshold_size

當 Translog 大小達到此閾值時,觸發一次 Lucene 刷新(Flush)。

1gb

512mb

小結

Elasticsearch 是處理大規模數據的必備工具,但要充分發揮其性能,必須優化索引過程。通過遵循上述 10 個技巧,你可以顯著提升 Elasticsearch 的索引效率,從而提高搜索和分析的能力。

責任編輯:武曉燕 來源: 銘毅天下Elasticsearch
相關推薦

2021-11-19 16:54:11

Python代碼開發

2014-09-17 11:20:38

AndroidListView技巧

2022-11-16 09:04:36

SQL查詢SELECT

2022-07-18 08:08:16

Go?語言技巧

2024-06-11 00:09:00

JavaScript模式變量

2011-07-05 14:59:17

java

2021-11-29 11:11:45

SQL查詢技巧

2023-06-13 13:52:00

Java 7線程池

2024-11-18 19:00:29

2010-06-18 09:17:51

jQuery

2021-07-19 22:51:28

Python開發編程

2023-10-10 18:24:46

PostgreSQL性能RDBMS

2009-06-29 19:13:54

VMware ESX虛擬化虛擬機

2020-02-03 13:50:17

Windows 10Windows技巧

2019-08-16 02:00:46

AndroidGoogle 移動系統

2011-01-19 09:07:20

Thunderbird

2021-05-12 09:00:00

WebReactJavaScript

2022-11-04 11:18:16

代碼優化可讀性

2024-12-05 10:18:48

2023-09-25 13:15:50

SQL數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91大神新作在线观看 | 亚洲国产中文字幕 | 岛国av在线免费观看 | 一级特黄网站 | 九九久久精品 | 日韩一区二区三区视频在线播放 | 欧美一区成人 | 亚洲一区二区三区免费观看 | 久久国| 午夜一级做a爰片久久毛片 精品综合 | 国产精品久久久久久久久久三级 | 欧美一级全黄 | 久久久视频在线 | 最新中文在线视频 | 久久国产综合 | 精品国产欧美一区二区三区不卡 | 精品国产一区二区三区在线观看 | 亚洲精品一二三区 | 羞羞色影院 | 二区av| av网站在线免费观看 | 性生生活大片免费看视频 | 精品一区二区三区四区视频 | 久久九 | 久夜精品 | 精品国产乱码久久久久久久久 | 欧美aⅴ | 亚洲成人午夜电影 | 日韩精品一区二区三区视频播放 | 亚洲精品视频播放 | 色综合色综合 | v片网站| caoporn国产精品免费公开 | 亚洲视频 欧美视频 | 久久久www成人免费无遮挡大片 | 日韩精品人成在线播放 | 91精品国产乱码久久久久久久久 | 午夜码电影 | 欧美专区在线视频 | 五月婷婷丁香 | 久久久久1|