Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java elasticsearch后端脱机时如何处理Hibernate搜索启动_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Hibernate Search - Fatal编程技术网 elasticsearch,hibernate-search,Java,elasticsearch,Hibernate Search" /> elasticsearch,hibernate-search,Java,elasticsearch,Hibernate Search" />

Java elasticsearch后端脱机时如何处理Hibernate搜索启动

Java elasticsearch后端脱机时如何处理Hibernate搜索启动,java,elasticsearch,hibernate-search,Java,elasticsearch,Hibernate Search,我面临以下例外 org.hibernate.search.exception.SearchException:HSEARCH000103:无法 初始化名为 'com.dnow.tvs.domain.entity.epc.MyEntity 在 org.hibernate.search.index.impl.IndexManagerGroupHolder.doCreateIndexManagerIndexManagerGroupHolder.java:198 ~[hibernate-search-e

我面临以下例外

org.hibernate.search.exception.SearchException:HSEARCH000103:无法 初始化名为 'com.dnow.tvs.domain.entity.epc.MyEntity

在 org.hibernate.search.index.impl.IndexManagerGroupHolder.doCreateIndexManagerIndexManagerGroupHolder.java:198 ~[hibernate-search-engine-5.10.5.Final.jar:5.10.5.Final]at

。。。省略37个公共框架

原因:org.hibernate.search.exception.SearchException:HSEARCH400007:Elasticsearch请求失败。 请求:使用参数{}获取 答复:空

。。。省略了44个公共帧

原因:java.util.concurrent.CompletionException:java.net.ConnectException:连接被拒绝:无进一步信息

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

这是因为我的elasticsearch服务器实例没有启动和运行

因此,当elasticsearch在应用程序启动或运行应用程序期间不可用时,我如何处理回退。如何优雅地恢复此功能,以便spring boot应用程序可以无缝启动弹性搜索在线或离线

这是我的应用程序属性

>   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搜索版本是5.10,elasticsearch版本是5.6.16


我真的很感谢你的帮助。请告诉我所需的任何其他信息。

如果要完全禁用Hibernate搜索,只需将Hibernate.Search.autoregister\u侦听器设置为false,如下所示


如果只想在Elasticsearch集群在启动时关闭时禁用Hibernate搜索,则Hibernate搜索中没有此类功能。但是,你可以自己做

提到可以注册一个HibernatePropertiesCustomizer bean,该bean可以自定义属性。我想您可以注册这样一个bean,在实现中,您可以自己向Elasticsearch集群发送请求,根据响应决定它是向上还是向下,并根据响应将hibernate.search.autoregister\u侦听器设置为true或false。不过,请确保在请求中使用合理的超时时间,因为这将在每次启动应用程序时执行

如果您希望在启动期间禁用对Elasticsearch集群的调用,但仍然希望Hibernate Search在保存实体或执行搜索时执行其工作,因为您希望集群再次备份,那就另当别论了


我认为您唯一的选择是将index_schema_management_strategy设置为none,如下所示

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


如果它起作用,您仍然需要以某种方式确保您的Elasticsearch模式设置为HibernateSearch所期望的。一旦问题得到解决,这可能会变得更容易,但目前还没有任何简单的方法可以做到这一点。可能是使用设置为创建的索引\u模式\u管理\u策略启动应用程序的另一个实例?

index\u模式\u管理\u策略=无一个不起作用。仍在启动时,hibernate search indexManager尝试连接弹性搜索服务器。这是它试图调用的,并在堆栈跟踪Elasticsearch请求失败时响应。Request:GET with parameters{}Response:null有什么想法吗?应该有一种方法可以让它尝试调用backup elasticsearch/lucene实例。或者如果存在某个属性,如果弹性搜索连接被拒绝,则禁用hibernate搜索。当然,我的搜索微服务将无法搜索。但是其他保存数据和休眠的微服务只在那里搜索新记录的索引。所以服务不应该受到影响。我不确定我是否理解你的意思。我编辑了我的答案来解释如何完全禁用Hibernate搜索。。。如果你是这个意思?关于您得到的错误,您确定您通过Hibernate Search 5.10.5和Hibernate.Search.elasticsearch.default.index\u schema\u management\u strategy=false得到了错误吗?从5.10.2开始,它不应该在启动时触发任何请求……您可以看到我使用hibernate 5.10.5的附加日志。没有“hibernate.search.elasticsearch.default.index\u schema\u management\u strategy=false”,只有无、创建、更新、验证、删除和创建。。。这里支持。所以是的,你的解决方案不起作用。基本上,当我的微服务启动时,我想跳过弹性搜索连接设置,只有在弹性搜索服务关闭的情况下。您可以先关闭elastic search server,然后启动hibernate搜索应用程序来创建此场景。您将在app startup.hibernate.sea上遇到连接被拒绝异常 rch.autoregister_listeners=false不起作用,我已经尝试过了,但在应用程序启动时,我在创建IndexManager时遇到连接被拒绝异常。