ElasticSearch 聚合太耗时,如何优化

index数据10G,经常执行下面查询,

{
    "aggs": {
        "sold": {
            "sum": {
                "field": "sold"
            }
        },
        "category": {
            "terms": {
                "field": "cat",
                "size": 100,
                "execution_hint": "map"
            }
        }
    },
    "sort": [
        ...
    ],
    "query": {
        ...
    }
}

sold是统计符合query条件的产品总销量
category是列出符合query条件的产品所属分类

但以上查询非常慢,单单用query查询产品,时间会在8s-15s之间,但加上aggs,时间就飙升到50s以上,已经无法正常使用。

10G体积,记录数也只有1300W,对es来说数据里是否算大?
query条件多数是区间查询,比如价格区间,销量区间,查询时间已经达到10s左右,是否正常?
以上query+aggs查询,aggs部分有没有优化空间?

阅读 6.1k
1 个回答
新手上路,请多包涵
单单用query查询产品,时间会在8s-15s之间
这已经不正常了,一般也要2s以内才算正常(更严格点得1s了)
先考虑ES的配置上的优化(集群数、机器配置如内存、SSD等)
再考虑优化聚合
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进