如何在elasticsearch后端脱机时处理Hibernate Search启动

问题描述 投票:0回答:1

我正面临以下例外

“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。

我非常感谢你的帮助。让我知道所需的任何其他信息。

java elasticsearch hibernate-search
1个回答
0
投票

如果你想完全禁用Hibernate Search,你可以简单地将hibernate.search.autoregister_listeners设置为false,如explained in the documentation

如果您只想在启动时Elasticsearch集群关闭时禁用Hibernate Search,那么Hibernate Search中就没有这样的功能。但是,你可以自己做。

This section of the Spring Boot documentation提到您可以注册一个能够自定义属性的HibernatePropertiesCustomizer bean。我想你可以注册这样一个bean,并且在实现中你会自己向Elasticsearch集群发送一个请求,根据响应确定它是上升还是下降,并根据它将hibernate.search.autoregister_listeners设置为truefalse。但是,请确保在请求中使用合理的超时,因为每次启动应用程序时都会执行此超时。

如果要在启动期间禁用对Elasticsearch集群的调用,但仍希望Hibernate Search在保存实体或执行搜索时执行其工作(因为您希望集群再次备份),那就是另一个故事。

我认为你唯一的选择是将index_schema_management_strategy设置为none,就像explained in the documentation一样。

但它并不是一个真正受支持的功能,更多的东西你可以尝试并可能工作。

如果它有效,您仍然必须以某种方式确保您的Elasticsearch架构设置为Hibernate Search期望的内容。一旦HSEARCH-2366得到解决,这可能会变得更容易,但是现在没有任何简单的方法可以做到这一点。也许用index_schema_management_strategy设置为create来启动你的应用程序的另一个实例?

© www.soinside.com 2019 - 2024. All rights reserved.