Hibernate搜索在服务器启动时创建不必要的线程来索引数据。默认配置为“ hibernate.search.autoregister_listeners”]] << [

问题描述 投票:0回答:1
我们已将系统休眠模式升级到5.4.12,休眠搜索规则升级到5.11.5。 Websphere 8.5.5.16。

正如我在休眠的官方文档中看到的以下行:

好消息是,当Hibernate ORM在类路径上检测到。如果由于某种原因需要禁用它,将hibernate.search.autoregister_listeners设置为假。

请注意,当听众已启用,但没有任何实体被注释为索引

我想请您注意上面的黑体字。即使文档说不会给我们带来任何性能问题,也不会为实体建立索引。这不能按设计工作。在服务器启动时,我们看到多个线程正在执行以对标有@Indexed批注的实体建立索引。由于该原因,服务器有时会抛出堆的内存不足异常。

如果我覆盖如下所示的默认配置,则不会发生:

<property name="hibernate.search.autoregister_listeners">false</property>

但是我又遇到了一个问题,下面已经报告了。

休眠配置文件

<property name="hibernate.search.autoregister_listeners">true</property> <property name="hibernate.search.default.indexmanager">elasticsearch</property> <property name="hibernate.search.default.elasticsearch.host">http://ip:9400</property> <property name="hibernate.search.default.elasticsearch.index_schema_management_strategy">none</property> <property name="hibernate.search.default.elasticsearch.required_index_status">yellow</property> <property name="hibernate.search.default.indexwriter.infostream">true</property>
以上是新升级的问题。 

我还有一个问题,如果我在下面设置我的休眠配置文件该怎么办

<property name="hibernate.search.autoregister_listeners">false</property>

我不再面对上述问题,但是我仍然无法使用以下配置来重新创建索引(通过使用

hibernate.search.default.elasticsearch.index_schema_management_strategy = drop-and-create

) “假”。为了克服这个问题,我首先必须将“ hibernate.search.autoregister_listeners”设置为true,然后再次启动服务器,但是我可能再次遇到线程/内存不足的问题。而且,在创建初始索引时,我想重写hibernate config属性(使用

org.hibernate.cfg.Configuration

类)“ hibernate.search.autoregister_listeners”为true,这可能在那个时间点工作(没有尝试过)。我很好奇了解新配置(hibernate.search.autoregister_listeners = true)以及为什么它不能按设计工作或按设计工作。因为这个不必要的线程(如果不合适,请宽恕这个词)会破坏我的应用程序性能。
此hibernate.search.autoregister_listeners默认启用的功能是否按设计工作?

我们已将系统休眠模式升级到5.4.12,休眠搜索规则升级到5.11.5。 Websphere 8.5.5.16。正如我在正式的休眠文档中看到的以下内容:好消息是...

hibernate hibernate-search
1个回答
0
投票
hibernate.search.autoregister_listeners控制是否启用休眠搜索。我知道这很令人困惑,但这是一个传统设置。在Hibernate Search 6中,它将重命名为hibernate.search.enabled
© www.soinside.com 2019 - 2024. All rights reserved.