[英]Highlighting in Hibernate Search 6 and Elasticsearch backend
[英]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
設置為true
或false
具體取決於。 但是,請確保在請求中使用合理的超時,因為每次啟動應用程序時都會執行此超時。
如果要在啟動期間禁用對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.