Hibernate 搜索 - 删除 Elasticsearch 索引配置
Hibernate search - delete Elasticsearch index config
我们正在使用海量索引器来创建索引本身和文档。
我们有自己的版本控制,想法是在有新版本时完全删除所有文档和索引配置,让 mass indexer 完成它的工作。
问题在于,与直接使用 Lucene 不同,当我们尝试清除所有索引时,它只会删除文档,不会删除索引配置,这最终会在尝试修改索引时发生冲突现有字段。
有没有办法通过 Hibernate Search 做到这一点,还是我们需要直接在集群上使用 DELETE 方法?
我假设您 运行 此批量索引作业是您从应用程序的一个版本迁移到下一个版本的过程的一部分。
如果是这样,在触发重建索引的一次性作业中,您可以使用以下设置启动 Hibernate:
hibernate.search.default.elasticsearch.index_schema_management_strategy drop-and-create
然后,在启动时,Hibernate Search 将完全删除索引及其映射,然后重新创建它。
注意 但是,只有在专用程序中执行质量索引时才可以。您的应用程序可能不应该使用此设置启动,因为它会导致它在每次启动时删除索引(例如,如果您出于某种原因必须重新启动服务器)。
旁注:
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 有一些索引元数据(映射),而 "raw" Lucene 没有。
但是,您当前的行为确实很烦人。我们将在未来尝试解决它,可能作为 HSEARCH-2861.
的一部分
我们正在使用海量索引器来创建索引本身和文档。 我们有自己的版本控制,想法是在有新版本时完全删除所有文档和索引配置,让 mass indexer 完成它的工作。
问题在于,与直接使用 Lucene 不同,当我们尝试清除所有索引时,它只会删除文档,不会删除索引配置,这最终会在尝试修改索引时发生冲突现有字段。
有没有办法通过 Hibernate Search 做到这一点,还是我们需要直接在集群上使用 DELETE 方法?
我假设您 运行 此批量索引作业是您从应用程序的一个版本迁移到下一个版本的过程的一部分。 如果是这样,在触发重建索引的一次性作业中,您可以使用以下设置启动 Hibernate:
hibernate.search.default.elasticsearch.index_schema_management_strategy drop-and-create
然后,在启动时,Hibernate Search 将完全删除索引及其映射,然后重新创建它。
注意 但是,只有在专用程序中执行质量索引时才可以。您的应用程序可能不应该使用此设置启动,因为它会导致它在每次启动时删除索引(例如,如果您出于某种原因必须重新启动服务器)。
旁注:
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 有一些索引元数据(映射),而 "raw" Lucene 没有。
但是,您当前的行为确实很烦人。我们将在未来尝试解决它,可能作为 HSEARCH-2861.
的一部分