Elasticsearch Aggregation升级到1.7.3后中断

时间:2015-10-21 18:11:35

标签: elasticsearch aggregation

在升级到1.7.3之前它正在工作但是现在它告诉我我的&​​#34;数据对于[性别]来说太大了。我跑了

curl -XGET localhost:9200/_nodes/stats/indices/fielddata?fields=*

它产生了

{
    {"fielddata":{"memory_size_in_bytes":642066528,"evictions":0,
    "fields":{"Markers":{"memory_size_in_bytes":196538816},
     "RegistrationDate":{"memory_size_in_bytes":101759288},
     "Abbreviation":{"memory_size_in_bytes":185815224},
     "Gender":{"memory_size_in_bytes":52988320},
     "Birthdate":{"memory_size_in_bytes":104956384},
     "buildNum":{"memory_size_in_bytes":8496}
     }
}

性别只是一个角色,那么它怎么会变得那么大呢?

阅读https://www.elastic.co/guide/en/elasticsearch/guide/current/_limiting_memory_usage.html似乎表明它不应该那么大。它只有M,F,U表示值。有什么想法吗?

标记

nested:  UncheckedExecutionException[org.elasticsearch.common.breaker.CircuitBreakingException: [FIELDDATA] Data too large, data for [Gender] would be larger than limit of [633785548/604.4mb]];

1 个答案:

答案 0 :(得分:2)

您可能遇到CircuitBreakingException。这样做的主要原因是您的堆几乎已满,并且没有足够的可用内存来提供请求。它并不一定意味着Gender值会占用整个内存,只是ES无法加载Gender字段所需的所有字段数据以及剩余的可用内存。

默认情况下,如果没有为fielddata缓存设置特定限制,则不会发生fielddata驱逐(输出中提示"evictions":0),默认情况下不设置限制。因此,您应尝试将indices.fielddata.cache.size设置为相对值(例如10%)或绝对值(例如3GB)。

您可以在elasticsearch.yml文件中设置它(在每个节点上)并重新启动节点或使用

动态执行
curl -XPUT localhost:9200/_cluster/settings -d '{
    "persistent" : {
        "indices.fielddata.cache.size" : "20%"
    }
}'

请注意,设置过低的值会对群集产生负面影响,因为会有大量的驱逐行为,而且必须经常重建fielddata缓存。因此,您可能需要进行一些实验,直到找到正确的值。