在创建索引时应用索引配置
Apply index configurations on index creation
我正在使用 hibernate-search-elasticsearch 5.11.5 并且我达到了索引限制 - 总字段限制默认为 1000。我需要增加这个限制,不幸的是这是一个索引限制,这意味着它必须在创建索引后设置。因为我有1000多个字段,
创建映射时发生错误。问题是创建索引映射的请求是在创建索引之后执行的,我看不到在创建映射之前应用索引设置的方法。以下是 ElasticsearchIndexManager class 处理索引和映射创建的代码:
case DROP_AND_CREATE:
case DROP_AND_CREATE_AND_DROP:
ElasticsearchSchemaDropper schemaDropper = elasticsearchService.getSchemaDropper();
schemaDropper.dropIfExisting( actualIndexName, schemaManagementExecutionOptions );
schemaCreator.createIndex( indexMetadata, schemaManagementExecutionOptions );
schemaCreator.createMappings( indexMetadata, schemaManagementExecutionOptions );
createdIndex = true;
break;
是否可以在创建索引后应用索引设置。如果不是,除了减少字段之外,你会推荐什么(我知道这么多字段有什么风险)?
您应该事先创建索引模板:在创建索引之前使用适当的设置定义模板,Elasticsearch 将在 Hibernate Search 创建索引时自动应用这些设置。
见https://www.elastic.co/guide/en/elasticsearch/reference/5.6/indices-templates.html
注意 Hibernate Search 5 仍会在启动时创建索引,因此您需要在启动应用程序之前使用 shell 脚本和 curl
,例如。
我正在使用 hibernate-search-elasticsearch 5.11.5 并且我达到了索引限制 - 总字段限制默认为 1000。我需要增加这个限制,不幸的是这是一个索引限制,这意味着它必须在创建索引后设置。因为我有1000多个字段, 创建映射时发生错误。问题是创建索引映射的请求是在创建索引之后执行的,我看不到在创建映射之前应用索引设置的方法。以下是 ElasticsearchIndexManager class 处理索引和映射创建的代码:
case DROP_AND_CREATE:
case DROP_AND_CREATE_AND_DROP:
ElasticsearchSchemaDropper schemaDropper = elasticsearchService.getSchemaDropper();
schemaDropper.dropIfExisting( actualIndexName, schemaManagementExecutionOptions );
schemaCreator.createIndex( indexMetadata, schemaManagementExecutionOptions );
schemaCreator.createMappings( indexMetadata, schemaManagementExecutionOptions );
createdIndex = true;
break;
是否可以在创建索引后应用索引设置。如果不是,除了减少字段之外,你会推荐什么(我知道这么多字段有什么风险)?
您应该事先创建索引模板:在创建索引之前使用适当的设置定义模板,Elasticsearch 将在 Hibernate Search 创建索引时自动应用这些设置。
见https://www.elastic.co/guide/en/elasticsearch/reference/5.6/indices-templates.html
注意 Hibernate Search 5 仍会在启动时创建索引,因此您需要在启动应用程序之前使用 shell 脚本和 curl
,例如。