1. low water disk
某个节点的硬盘空间超过85%时,es将不会再往该节点分配replica。这在重启后时,会发现集群状态始终是yellow,有一些unassigned shards。此时可以不停机的进行集群配置。
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "80%",
"cluster.routing.allocation.disk.watermark.high": "50gb",
}
}
使用百分比或者gb数都可以,注意low的值一般要比high的大。
2. org.elasticsearch.common.breaker.CircuitBreakingException: [FIELDDATA] Data too large
这个Data too large也是经常遇到的问题,究其原因,在于ES配置中提到的FieldData指的是字段数据。当排序(sort),统计(aggs)时,ES把涉及到的字段数据全部读取到内存(JVM Heap)中进行操作。相当于进行了数据缓存,提升查询效率。
JVM中默认使用内存的60%作为上限,当memory_size_in_bytes用到了可用上限,而evictions(驱逐)为0。当下的缓存处于无法有效驱逐的状态,新的缓存数据进不去,老的缓存数据没有被驱逐出来,ES就会报错。
简而言之