簡體   English   中英

Elasticsearch 索引策略創建最佳實踐/性能

[英]Elasticsearch index policy creation best practice/performance

我正在設計一個基於 ElasticSearch 的搜索系統,在閱讀了很多之后我看到一些系統如日志使用多個索引的策略來保存相同的內容,類似於mylogs-12-02-2020並且正在創建索引一天,然后進行搜索,他們在所有符合mylogs- * pattern的索引中執行搜索,每個索引都有其主分片和副本。 我的問題是關於搜索的性能,如果使用 n 個分片查看 500 萬個文檔的索引或查找 100,000 個文檔的 50 個索引,性能會更好。 有沒有人有任何遵循最佳實踐的經驗?

我假設我的系統每天大約增長 200,000 個文檔。

最佳實踐是什么,在多個索引中分開或在不同節點中有一個索引和多個主分片(這樣它們在搜索/索引時不會競爭相同的資源)?

在對mylogs-* elastic進行搜索時,它是否與索引平行並在其分片的每個索引內?

Elasticsearch @Umar 給出的默認配置是舊的,從 7.0 ES 最新主要版本開始,主分片減少到 1 ,您可以在 ES 官方重大更改公告中查看。

沒有人能夠設計出具有最佳分片和副本數的完美 ES 索引,並且需要在此期間不斷進行微調。 影響設計考慮的一些因素。

  1. 讀取或寫入繁重的系統。

  2. 基於時間的索引(如您的日志搜索),通常搜索發生在更新的日志或電子商務產品目錄或網站搜索中,您不能將索引划分為基於時間的數據。

  3. ES 集群(多租戶 vs 專用於單個索引)。

以上只是一些示例,我可以 go 可以給出數百個其他因素,您可以在設計 ES 索引配置時考慮這些因素。 但我們的想法是首先從更關鍵的參數開始(比如更改主分片需要重新索引),還要考慮近期的增長,然后根據當前系統性能進行微調。

我會通過我的詳細博客強烈建議您 go,這將通過真實案例研究詳細回答您關於(在一個索引中搜索更多文檔而不是在更多索引/分片中搜索更少文檔)的問題。

上面的博客還解釋了 ES 將長期默認的主分片從 5 個更改為 1 個的決定。

回答您的以下問題:

問題:在對mylogs-* elastic進行搜索時,它是否與索引平行並在其分片的每個索引內?

答:是的,ES 具有分布式架構,並且由於 ES 索引由成熟的搜索引擎 Lucene 分片組成,每個 ES 查詢如果需要命中多個分片(無論是相同索引還是相同索引),將由多個線程並行執行多個索引),給定線程是空閑的,否則一旦線程完成,它將被用於查詢另一個分片。 這就是為什么 ES 比其他分布式系統快得多的原因。

默認情況下,Elasticsearch 索引有 5 個主分片,每個分片有 1 個副本。 但問題是默認配置並不適合所有用例。

分片大小對於搜索查詢非常重要。 如果分配給索引的分片過多,則 Lucene 段會很小,這會導致開銷增加。 當同時進行多個查詢時,許多小分片也會降低查詢吞吐量。 另一方面,太大的分片會導致搜索性能下降和故障恢復時間變長。 所以Elasticsearch建議一個shard的大小在20~40GB左右。

請記住,分片本身充當獨立的搜索引擎,而不是索引。 索引是一種數據組織機制,允許用戶以某種方式對數據進行分區。 就這些!

有關詳細信息,請閱讀這篇文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM