我正在处理一个巨大的json blob所以我需要打开密封。如何将elasticsearch index.mapping.total_fields.limit
设置为无限制?
答案 0 :(得分:3)
您无法将其设置为无限制。实际上,它有意限制为防止映射爆炸。您可以在此处阅读github issue。
实现你想要的唯一目标就是使用高价值。
您可以在创建索引时指定该值:
PUT test
{
"shopfront": {
"index.mapping.total_fields.limit": 2000,
"number_of_shards": 5,
"number_of_replicas": 2
},
"mappings": {
...
}
}
或者如果是现有索引:
PUT shopfront/_settings
{
"index.mapping.total_fields.limit": 2000
}
答案 1 :(得分:0)
我认为当前的实现不允许您将此值设置为无限制。
您可能知道默认值已经很高(1000),如official docs中所述。
如果您检查源代码,您可以看到当前实现不允许无限制(例如设置为-1),正如您在以下代码段中看到的那样from official elasticsearch source code:
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");
}
}
我认为您最好的选择是在映射索引时将其设置为非常高的值,并检查开销是否可以用于您的用例。