Hibernate搜索 - 删除Elasticsearch索引配置

时间:2018-02-13 12:33:29

标签: java hibernate elasticsearch hibernate-search elasticsearch-5

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

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

有没有办法通过Hibernate Search执行此操作,还是我们需要直接在群集上使用DELETE方法?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

来源:the official documentation

旁注:

  

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

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

但是,在您的情况下,当前的行为确实很烦人。我们将在未来尝试解决它,可能是HSEARCH-2861的一部分。