具有嵌套聚合的Elasticsearch查询导致内存不足

前端之家收集整理的这篇文章主要介绍了具有嵌套聚合的Elasticsearch查询导致内存不足前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我安装了Elasticsearch 16GB的内存.我开始使用聚合,但在尝试发出以下查询时遇到“ java.lang.OutOfMemoryError: Java堆空间”错误
POST /test-index-syslog3/type-syslog/_search
{
    "query": {
        "query_string": {
           "default_field": "DstCountry","query": "CN"
        }
    },"aggs": {
        "whatever": {
            "terms": {
                "field" : "SrcIP"
            },"aggs": {
                "destination_ip": {
                    "terms": {
                        "field" : "DstIP"
                    },"aggs": {
                        "port" : {
                            "terms": {
                                "field" : "DstPort"
                            }
                        }
                    }
                }
            }
        }
    }
}

query_string本身只返回1266次点击,所以我对OOM错误感到有点困惑.

错误地使用聚合吗?如果没有,我该怎么做才能解决这个问题?
谢谢!

您正在将整个SrcIP,DstIP和DstPort字段加载到内存中以便在它们上进行聚合.这是因为Elasticsearch将整个字段取消反转,以便能够快速查找给定其ID的字段的文档值.

如果您要在很大程度上聚合一小组数据,则应该是look into using docvalues.然后,文档的值以一种方式存储,以便在给定文档ID的情况下轻松查找.它有更多的开销,但是这样你就可以把它留给操作系统的字段缓存来将相关页面放在内存中,而不必加载整个字段.

猜你在找的设计模式相关文章