我们正在使用群发索引器来创建索引本身和文档。 我们有自己的版本,并且想法是在有新版本时让完全删除所有文档和索引配置,让质量索引器完成它的工作。
问题在于,与直接使用Lucene不同,当我们尝试清除所有索引时,它只删除文档,它不会删除索引配置,这在尝试修改时会导致冲突。现有领域。
有没有办法通过Hibernate Search执行此操作,还是我们需要直接在群集上使用DELETE方法?
答案 0 :(得分:2)
我假设您将此批量索引作业作为迁移过程的一部分从应用程序的一个版本运行到下一个版本。 如果是这样,在触发重建索引的一次性作业中,您可以使用以下设置启动Hibernate:
hibernate.search.default.elasticsearch.index_schema_management_strategy drop-and-create
然后,在启动时,Hibernate Search将完全删除索引及其映射,然后重新创建它。
小心但是,只有在专用程序中执行批量索引时才会这样。您的应用程序可能不应该使用此设置启动,因为它会导致它在每次启动时删除索引(例如,如果您因任何原因必须重新启动服务器)。
旁注:
问题在于,与直接使用Lucene不同,当我们尝试清除所有索引时,它只删除文档,它不会删除索引配置,这会在尝试修改现有字段时出现冲突
这实际上与Lucene集成的行为相同:当您清除Lucene索引时,索引文件保持不变,只是删除了任何内容。 主要区别在于Elasticsearch有一些索引元数据(映射),而“原始”Lucene没有。
但是,在您的情况下,当前的行为确实很烦人。我们将在未来尝试解决它,可能是HSEARCH-2861的一部分。