我被要求调查ElasticSearch集群中的性能问题,并且遇到了以下配置:
sudo apt-get purge php7.0-common
请注意,有两个fielddata条目。
上述方案中的indices:
breaker:
fielddata:
limit: 50%
fielddata:
cache:
expire: 15m
size: 40%
memory:
index_buffer_size: 50%
,fielddata.limit
和fielddata.cache.expire
设置会发生什么情况,与以下对我来说更符合逻辑的情况相比?
fielddata.cache.size
例如,由于indices:
breaker:
fielddata:
limit: 50%
cache:
expire: 15m
size: 40%
memory:
index_buffer_size: 50%
级别的第二个声明会导致fielddata.limit
字段丢失吗?
答案 0 :(得分:1)
映射节点的内容是一组无序的键:值节点对,并且每个键都是唯一的限制。
因此,您发布的YAML只是非法的,并且兼容的加载器必须以错误停止 - 但是,由于节点相等性非常重要,因此在ElasticSearch(SnakeYAML)中使用的YAML实现中也没有实现它。关于重复键的open issue。
由于ElasticSearch似乎允许重复密钥,因此无法遵守YAML规范。这是一件坏事,我建议为它开一个问题。更重要的是,无法从使用的YAML实现推断出ElasticSearch行为。它有一个history重复键,其中一个开发者有一个statement:
此外,elasticsearch的下一个主要版本将具有严格的设置解析,并在启动时返回错误。
总结一下:ElasticSearch没有为重复密钥抛出错误是一个已知的缺点,将在下一个主要版本中修复。因此,当前行为是无意的,不应使用。根据链接的错误,重复键的 last 值的值将被丢弃,之前的值将被丢弃。不会发生儿童映射的合并。