private void checkTotalFieldsLimit(long totalMappers) {
long allowedTotalFields = indexSettings.getValue(INDEX_MAPPING_TOTAL_FIELDS_LIMIT_SETTING);
if (allowedTotalFields < totalMappers) {
throw new IllegalArgumentException("Limit of total fields [" + allowedTotalFields + "] in index [" + index().getName() + "] has been exceeded");
}
}
2条答案
按热度按时间chhkpiq41#
您不能将其设置为无限制。事实上,它已经被有意地限制,以防止Map爆炸。你可以在这里阅读github issue。
唯一能达到你想要的就是使用高值。
您可以在创建索引时指定该值:
或者如果是针对现有索引:
z18hc3ub2#
我不认为当前实现允许您将此值设置为unlimited。
正如您可能知道的,默认值已经很高了(1000),如official docs中所述。
如果你检查源代码,你会发现当前的实现不允许无限(例如设置为-1),你可以在下面的代码片段中看到from official elasticsearch source code:
我认为最好的选择是在Map索引时将其设置为一个非常高的值,并检查开销是否适合您的用例。