加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

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

发布时间:2020-05-23 23:45:16 所属栏目:程序设计 来源:互联网
导读:我安装了Elasticsearch 16GB的内存.我开始使用聚合,但在尝试发出以下查询时遇到“ java.lang.OutOfMemoryError: Java堆空间”错误: POST /test-index-syslog3/type-syslog/_search{ query: { query_string: { default_fie

我安装了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的情况下轻松查找.它有更多的开销,但是这样你就可以把它留给操作系统的字段缓存来将相关页面放在内存中,而不必加载整个字段.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读