我們將休眠搜索集成到我們的 crud 微服務(簡單的 Spring Boot 應用程式)中,它就像一個魅力。讓我們的架構師感到緊張的一個事實是,當 Elasticsearch 未運行時,crud 服務拒絕啟動。
有沒有辦法告訴休眠搜索它應該忽略 Elasticsearch 集群狀態?
uj5u.com熱心網友回復:
您可以在不嘗試訪問 Elasticsearch 的情況下啟動 Hibernate Search,并且記錄在案:https ://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#backend-elasticsearch-configuration-version
簡而言之,設定這些屬性:
hibernate.search.backend.version_check.enabled = false
hibernate.search.backend.version = 7.17
hibernate.search.schema_management.strategy = none
缺點是:
- Hibernate Search 無法自行確定 Elasticsearch 的版本(顯然,因為 Elasticsearch 可能已關閉),因此您必須自己提供該版本。如果您提供的版本錯誤,則在呼叫 Elasticsearch API 時,您將面臨使用錯誤語法或端點的 Hibernate Search 風險。
- Hibernate Search 不會在啟動時創建/驗證 Elasticsearch 模式(顯然,因為 Elasticsearch 可能已關閉),因此您必須確保 Elasticsearch 模式已自己初始化(并且有效)(例如使用手動模式管理)。手動模式初始化可能在啟動后發生,但必須在索引/搜索之前發生(見下文)。
- 如果要求在 Elasticsearch 關閉時索引某些內容或運行查詢,Hibernate Search 仍然會失敗,但是您對此無能為力。有些人在啟動時進行手動檢查以查看 Elasticsearch 是否已關閉,在這種情況下,通過動態設定配置完全禁用 Hibernate Search,以便至少他們仍然可以更新資料庫中的物體。但隨后他們的索引不再更新,搜索功能仍然不可用。
outbox-polling編輯:您還可以通過使用協調策略來解決第三項(如果 Elasticsearch 關閉,索引將失敗的事實),它將在資料庫中記錄索引事件并在后臺處理它們而不是直接索引。當 Elasticsearch 正在進行時,索引仍然會失敗,但它會在某些后臺行程而不是主應用程式執行緒中失敗,并且一旦 Elasticsearch 備份,您將能夠重新處理事件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515519.html
標籤:爪哇弹簧靴休眠休眠搜索
