如何通过ElasticSearch解析Yaml中的双重条目?

时间:2016-09-30 10:08:53

标签: elasticsearch

我被要求调查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.limitfielddata.cache.expire设置会发生什么情况,与以下对我来说更符合逻辑的情况相比?

fielddata.cache.size

例如,由于indices: breaker: fielddata: limit: 50% cache: expire: 15m size: 40% memory: index_buffer_size: 50% 级别的第二个声明会导致fielddata.limit字段丢失吗?

1 个答案:

答案 0 :(得分:1)

YAML规范中的

Relevant section

  

映射节点的内容是一组无序的键:值节点对,并且每个键都是唯一的限制。

因此,您发布的YAML只是非法的,并且兼容的加载器必须以错误停止 - 但是,由于节点相等性非常重要,因此在ElasticSearch(SnakeYAML)中使用的YAML实现中也没有实现它。关于重复键的open issue

由于ElasticSearch似乎允许重复密钥,因此无法遵守YAML规范。这是一件坏事,我建议为它开一个问题。更重要的是,无法从使用的YAML实现推断出ElasticSearch行为。它有一个history重复键,其中一个开发者有一个statement

  

此外,elasticsearch的下一个主要版本将具有严格的设置解析,并在启动时返回错误。

总结一下:ElasticSearch没有为重复密钥抛出错误是一个已知的缺点,将在下一个主要版本中修复。因此,当前行为是无意的,不应使用。根据链接的错误,重复键的 last 值的值将被丢弃,之前的值将被丢弃。不会发生儿童映射的合并。