簡體   English   中英

彈性搜索:一個具有自定義類型的索引來區分文檔模式 VS 多個索引,每個文檔類型一個?

[英]Elastic Search: One index with custom type to differentiate document schemas VS multiple index, one per document type?

我在 ES 方面沒有經驗(我的背景更多是關系數據庫),我正在努力實現在我的 Web 應用程序中有一個搜索欄來搜索它的全部內容(或我願意索引的內容)的目標ES)。

實現的架構是 Jamstack 和 gatsby 應用程序,從一個 Strapi 應用程序(無頭 cms)獲取內容(有時在構建時,有時在運行時)。 中間自己開發了一個微服務,將trapi應用中創建的文檔寫入到ES數據庫中。 此時,所有文檔都只有一個索引,無論類型如何。

我的問題是,隨着應用程序的增長和創建不同類型的文檔(有時彼此之間非常不同,例如我可以擁有一篇文章(新聞)和一家醫院)我很難像我一樣正確查詢數據庫在進行查詢時定義很多特定條件(涵蓋所有類型的文檔)。

我對此的解決方案是只保留一個索引並將查詢分解為多個索引,當用戶點擊搜索按鈕時,這些查詢將運行,結果將在呈現之前合並在一起,或者將唯一的索引分解為幾個索引,每個文檔一個,這讓我產生了另一個疑問,是否可以一次查詢多個索引並在查詢中定義特定的索引字段?

哪種方法最好? 我希望我能在這方面明確自己。

提前致謝。

根據您提供的示例,其中一種類型的文檔可以是news類型而另一種類型是hospital ,創建多個索引是有意義的(但您還需要說明您有多少這樣的不同類型)。 這兩種方法各有利弊,一旦您了解它們,您就可以根據您的用例選擇一種。

在我開始列出優點/缺點之前,您的另一個問題的答案是您可以使用multi-search API在單個搜索查詢中查詢多個索引。

擁有單一索引的優點

  1. 減少多個索引的管理開銷(這就是為什么我問您的應用程序中可能有多少這樣的索引)。
  2. 由於數據存在於一個地方,因此性能更高的搜索查詢。

缺點

  1. 您正在索引不同類型的文檔,因此您必須包含一個復雜的過濾器來獲取您需要的數據。
  2. 相關性不會很好,因為您有多種文檔會影響相似性算法(BM25)的 IDF,並影響相關性。

具有不同索引的優點

  1. 最好根據數據的屬性分離數據,以獲得更好的相關結果。
  2. 您的搜索查詢不會很復雜。
  3. 如果您擁有非常龐大的數據,那么分解數據、獲得最佳分片大小和更好的性能是有意義的。

缺點

  1. 更多的管理開銷。
  2. 如果需要在所有索引中搜索,則必須實現多重搜索並等待所有索引搜索結果,這可能代價高昂。

暫無
暫無

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

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