【问题标题】:Elasticsearch Aggregation PerformanceElasticsearch 聚合性能
【发布时间】:2016-04-09 04:00:39
【问题描述】:

在我们的弹性索引中,我们有每日新闻文档,并且我们正在为这些文档运行聚合。但是,连续 2 次运行后,elasticsearch 返回没有足够的内存异常。现在我们已经增加了弹性的堆大小,但是除了增加弹性的 ram 之外还有其他解决方案吗?

用于聚合的字段属性;

"detail_stop": {
          "type": "string",
          "store": true,
          "analyzer": "stop_analyzer"
        }

聚合查询;

 {
        "from": 0,
        "size": 5000,
        "query": {
            "bool": {
                "must": [
                    {
                        "range": {
                            "date": {
                                "gte": "now-0d/d"
                            }
                        }
                    }

                ]
            }
        },
        "aggs": {
            "words": {
                "terms": {
                    "size": 5000,
                    "field": detail_stop,
                    "min_doc_count": 3
                }
            }
        }
    }  

目前我们有一个具有 1 个节点(8core 2.5ghz,32gb)和 ES_HEAP_SIZE = 16g(弹性有 16gb 内存)的弹性集群。我们如何才能减少内存使用并提高性能?

【问题讨论】:

    标签: elasticsearch aggregation


    【解决方案1】:

    如果您使用的是字段缓存,那么您必须提供更多内存才能使聚合工作。你可以试试here 提到的技巧来监控和限制内存消耗。

    随着 Elasticsearch 的更新版本,文档值正在成为规范,而不是字段数据缓存。与现场数据相比,它们稍微慢一些,但可以解决内存问题。请注意,要使用 doc 值,您必须再次重新索引所有数据。阅读更多关于它的信息here

    【讨论】:

    • 我知道当我使用 doc_val 时我必须重新索引,但 doc 值不支持分析的字段,所以这不是一个选项。感谢您的回答。
    • 我已经检查了你上面提到的链接十几次,并且已经对堆空间、cpu 使用等进行了调整。但到目前为止还没有得到有用的结果。如果存在,我正在寻求其他解决方案。
    • 没有。如果使用字段缓存,则必须在堆内存中腾出空间。
    猜你喜欢
    • 2023-03-20
    • 2019-01-28
    • 1970-01-01
    • 2017-09-24
    • 2014-01-05
    • 2023-01-08
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多