簡體   English   中英

如何在elasticsearch后端脫機時處理Hibernate Search啟動

[英]How to handle Hibernate Search startup when elasticsearch backend is offline

我正面臨以下例外

“org.hibernate.search.exception.SearchException:HSEARCH000103:無法初始化名為'com.dnow.tvs.domain.entity.epc.MyEntity”的IndexManager

在org.hibernate.search.indexes.impl.IndexManagerGroupHolder.doCreateIndexManager(IndexManagerGroupHolder.java:198)〜[hibernate-search-engine-5.10.5.Final.jar:5.10.5.Final] at

...省略了37個常用幀

引起:org.hibernate.search.exception.SearchException:HSEARCH400007:Elasticsearch請求失敗。 請求:帶參數的GET {}響應:null

...省略了44個常用幀

引起:java.util.concurrent.CompletionException:java.net.ConnectException:拒絕連接:沒有進一步的信息

org.hibernate.search.elasticsearch.client.impl.DefaultElasticsearchClient $ 1.onFailure(DefaultElasticsearchClient.java:123)~ [hibernate-search-elasticsearch-5.10.5.Final.jar:5.10.5.Final]

這是因為我的elasticsearch服務器實例沒有啟動並運行。

那么當應用程序啟動時或運行的應用程序中沒有彈性搜索時,如何處理回退。 如何優雅地恢復這一點,以便彈簧啟動應用程序可以無縫啟動彈性搜索在線或離線。

這是我的應用程序屬性。

>   jpa:
>     show-sql: true
>     properties:
>       hibernate:
>         search:
>           default:
>             indexmanager: elasticsearch
>             elasticsearch:
>               required_index_status: yellow
>               index_schema_management_strategy: drop-and-create
>               host: http://127.0.0.1:9200

我確實已經通過官方的hibernate搜索文檔,但無法識別解決方案或配置。

請注意我的Hibernate Search版本是5.10,elasticsearch版本是5.6.16。

我非常感謝你的幫助。 讓我知道所需的任何其他信息。

如果要完全禁用Hibernate Search,只需將hibernate.search.autoregister_listeners設置為false ,如文檔中所述

如果您只想在啟動時Elasticsearch集群關閉時禁用Hibernate Search,那么Hibernate Search中就沒有這樣的功能。 但是,你可以自己做。

Spring Boot文檔的這一部分提到您可以注冊一個能夠自定義屬性的HibernatePropertiesCustomizer bean。 我想你可以注冊這樣一個bean,在實現中你可以自己向Elasticsearch集群發送一個請求,根據響應確定它是up還是down,並將hibernate.search.autoregister_listeners設置為truefalse具體取決於。 但是,請確保在請求中使用合理的超時,因為每次啟動應用程序時都會執行此超時。

如果要在啟動期間禁用對Elasticsearch集群的調用,但仍希望Hibernate Search在保存實體或執行搜索時執行其工作(因為您希望集群再次備份),那就是另一個故事。

我認為您唯一的選擇是將index_schema_management_strategy設置為none ,如文檔中所述

但它並不是一個真正受支持的功能,更多的東西你可以嘗試並可能工作。

如果它有效,您仍然必須以某種方式確保您的Elasticsearch架構設置為Hibernate Search期望的內容。 一旦HSEARCH-2366得到解決,這可能會變得更容易,但是現在沒有任何簡單的方法可以解決這個問題。 也許在index_schema_management_strategy設置為create情況下啟動應用程序的另一個實例?

暫無
暫無

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

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