gpt4 book ai didi

elasticsearch - Hibernate Search Mass Indexer不会删除映射

转载 作者:行者123 更新时间:2023-12-02 22:28:28 26 4
gpt4 key购买 nike

我目前正在像这样使用MassIndexer重新索引我的实体:

fullTextSession.createIndexer().startAndWait();

但是,我了解到MassIndexer不会删除现有的映射。似乎唯一的删除映射的方法是将 index_schema_management_strategy设置为“拖放并创建”,不建议在生产环境中使用它。

我尝试在使用MassIndexer重新建立索引之前直接使用DELETE索引API进行 flex 搜索,但这会给我们的映射带来奇怪的行为。

建议删除索引及其映射,然后使用MassIndexer重建该索引的推荐方法是什么?

最佳答案

我已经找到了一种使休眠搜索完全删除映射和索引的方法,尽管这已经是一种解决方法。

通过像这样实例化ElasticSearchService:

SearchIntegrator si = org.hibernate.search.orm.spi.SearchIntegratorHelper.extractFromEntityManagerFactory( fullTextSession.getEntityManagerFactory() );
ElasticsearchService elasticsearchService = si.getServiceManager().requestService(ElasticsearchService.class);

然后,您可以访问以下类:
ElasticsearchSchemaDropper schemaDropper = elasticsearchService.getSchemaDropper();
ElasticsearchSchemaCreator schemaCreator = elasticsearchService.getSchemaCreator();

并执行以下操作:
schemaDropper.drop(URLEncodedString.fromString("index you want to drop"), options);
schemaCreator.createIndex( indexMetadata, options );
schemaCreator.createMappings( indexMetadata, options );

本质上,这就是 drop-and-create配置设置将为您完成的工作。我们计划将其设置为一些外部服务,以便在我们要完全重建索​​引(映射和文档)时都可以使用。

不幸的是,这感觉很hacky,而且很好奇,似乎没有更好的方法可以做到这一点。

关于elasticsearch - Hibernate Search Mass Indexer不会删除映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51899637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com