Data too large

https://blog.csdn.net/hereiskxm/article/details/46744985

  1. CircuitBreakingException[[FIELDDATA] Data too large, data for [proccessDate] would be larger than limit of [10307921510/9.5gb]]; }]"

PUT /_cluster/settings

  1. {
  2. "persistent": {
  3. "indices.fielddata.cache.size"40%,
  4. "indices.breaker.fielddata.limit"60%
  5. }
  6. }
  • 这次Data too large异常是ES默认配置的一个坑,我们没有配置indices.fielddata.cache.size,它就不回收缓存了。缓存到达限制大小,无法往里插入数据。个人感觉这个默认配置不友好,不知ES是否在未来版本有所改进。

  • fielddata.limit的配置需要比fielddata.cache.size稍大。而fieldData缓存到达fielddata.cache.size的时候就会启动自动清理机制。expire配置不建议使用。

    • 当前fieldData缓存区大小 < indices.fielddata.cache.size
    • 当前fieldData缓存区大小+下一个查询加载进来的fieldData < indices.breaker.fielddata.limit
  • indices.breaker.request.limit限制查询的其他部分需要用的内存大小。indices.breaker.total.limit限制总(fieldData+其他部分)大小。

  • 创建mapping时,可以设置fieldData format控制缓存数据格式。

清除缓存

  1. POST /_cache/clear

配置

验证

创建index和mapping

  1. PUT test_fd
  2. {
  3. "settings" : {
  4. "number_of_shards" : 1,
  5. "number_of_replicas" : 1
  6. },
  7. "mappings" : {
  8. "data" : {
  9. "properties" : {
  10. "zuMaker": {
  11. "type":"keyword",
  12. "index":"false"
  13. },
  14. "zuName":{
  15. "type":"text",
  16. "index":"true",
  17. "boost":"5",
  18. "analyzer":"ik_max_word",
  19. "search_analyzer":"ik_max_word"
  20. }
  21. }
  22. }
  23. }
  24. }

添加数据

  1. PUT test_fd/data/1
  2. {
  3. "zuMaker":"张三李四",
  4. "zuName": "墙体钢结构"
  5. }

查询fielddata占用内存大小

  1. GET /test_fd/_stats/fielddata?fields=*
文档更新时间: 2019-05-21 14:40