java - Hibernate 搜索 - 删除 Elasticsearch 索引配置

标签 java hibernate elasticsearch hibernate-search elasticsearch-5

我们正在使用质量索引器来创建索引本身和文档。 我们有自己的版本控制,其想法是当有新版本时完全删除所有文档和索引配置,并让质量索引器完成其工作。

问题是,与直接使用 Lucene 不同,当我们尝试清除所有索引时,它只会删除文档,不会删除索引配置,这在尝试修改现有字段时会导致冲突.

有没有办法通过 Hibernate Search 来做到这一点,还是我们需要直接在集群上使用 DELETE 方法?

最佳答案

我假设您运行此批量索引作业作为从应用程序的一个版本到下一个版本的迁移过程的一部分。 如果是这样,在触发重新索引的一次性作业中,您可以使用以下设置启动 Hibernate:

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

然后,在启动时,Hibernate Search 将完全删除索引及其映射,然后重新创建它。

请小心,但只有在专用程序中执行批量索引时才可以。您的应用程序可能不应该使用此设置启动,因为它会导致它在每次启动时删除索引(例如,如果您出于某种原因必须重新启动服务器)。

来源:the official documentation

附注:

The problem is that, differently from using Lucene directly, when we try to purge all the indexes, it only deletes the documents, it doesn't delete the index config, which ends up in conflicts when trying to modify an existing field.

这实际上与 Lucene 集成的行为相同:当您清除 Lucene 索引时,索引文件保持不变,只是删除了所有内容。 主要区别在于 Elasticsearch 有一些索引元数据(映射),而“原始”Lucene 没有。

但是,对于您的情况来说,当前的行为确实相当烦人。我们将在未来尝试解决这个问题,可能作为 HSEARCH-2861 的一部分.

关于java - Hibernate 搜索 - 删除 Elasticsearch 索引配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766945/

相关文章:

caching - 字段作为 Doc_Values 以减少内存使用

java - 飞利浦 Hue - "method, PUT, not available for resource,/scenes"(Java SDK)

java - 如何在没有包的情况下获取类的名称?

java - 在java中读取换行符

java - 将列表作为值插入映射中

python-2.7 - 等价于python中的 `GET _mapping`奇迹/感觉?

java - 为什么? "Always declare user defined exceptions as final"

hibernate - 如何查询M :N relationship using enums with CriteriaBuilder

java - Spring Boot 保存数据到数据库 休息 1 天

elasticsearch - 如何使用jdbc River向elasticsearch添加多种对象类型?