为什么 Elasticsearch 对字段数量设置了 1000 个限制


  1. 为什么 Elasticsearch 对字段总数设置了 1000 个限制?
  2. 它会导致性能下降吗?
  3. 如果是,为什么?在Lucene中没有这样的限制。

另外,有人可以更详细地解释这些设置吗?

我相信文档本身对这些设置的解释非常好。

在某些情况下,索引的映射是动态的(通常记录用例或用户基础架构中的一些流氓文档生成器),并且像这样可能会导致索引中有数十万个字段。当这种情况通常发生时,只有少数文档在这些海量字段中具有值,而大多数文档没有。从磁盘使用的角度来看,这不是一件好事。为什么这可能是一个问题,在文档的另一部分中再次得到了很好的解释。

但是,不好的部分是,大多数时候用户没有计划或没想到会有如此多的字段,我们为字段计数引入的限制是为了保护这些情况下的用户不会无意中伤害自己。

如果您对索引有一个经过深思熟虑的映射,并且您知道这 1000 个字段的限制不适合您,则可以将其更改为适合您的用例和场景的数字:

PUT /test/_settings { "index.mapping.total_fields.limit": 2000 }

相关内容