将索引配置应用于索引创建

问题描述

我正在使用hibernate-search-elasticsearch 5.11.5,我遇到了一个索引限制-总字段限制,认为1000。我需要增加此限制,不幸的是,这是一个索引限制,这意味着它必须为在创建索引之后设置。因为我有1000多个字段, 创建映射时发生错误。问题在于创建索引映射的请求是在创建索引之后执行的,我看不到在创建映射之前应用索引设置的方法。这是来自ElasticsearchIndexManager类的用于处理索引和映射创建的代码

 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;

在创建索引后是否有可能应用索引设置。如果不是的话,除了减少字段之外,您还有什么建议(我知道这么多字段有什么风险)?

解决方法

您应该事先创建索引模板:在创建索引之前定义具有适当设置的模板,并且当Hibernate Search创建索引时,Elasticsearch将自动应用这些设置。

请参见https://www.elastic.co/guide/en/elasticsearch/reference/5.6/indices-templates.html

注意,Hibernate Search 5仍会在启动时创建索引,因此,例如,您需要在启动应用程序之前通过使用Shell脚本和curl自己向集群发送REST请求来创建这些模板。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...