MongoDB、Elasticsearch分组统计性能比较

环境参数

CentOS 7.6 虚拟机 4核 8GB

Elasticsearch 5.6.16

MongoDB 5.0.9

数据结构

{
  "userId": "rkyao",
  "searchId": "6e1c409ed7484a6a8a795e750bef9e2d",
  "content": "南南西海山",
  "stime": "2022-09-03T21:13:54+0800"
}

性能测试

content字段分组并统计每组数量。

Elasticsearch

数据量500万条,取前10组 第一次查询耗时500ms以内,后续查询3ms

GET /characteristic_company/search_record_one_month/_search
{
    "size": 0,
    "aggs": {
      "GROUP_BY_CONTENT": {
        "terms": {
          "field": "content.keyword",
          "size": 10,
          "order": {
            "_count": "desc"
          }
        }
      }
    }
}
MongoDB

数据量500万条,取前10组,第一次查询耗时84s,后续查询无明显提升。

数据量100万条,取前10组,第一次查询耗时7.49s,后续查询无明显提升。

db.characteristic_company_search_one_month.aggregate([
    {
        '$group': {'_id': {'content':'$content'}, 'score': {'$sum': 1}}
    },
    {$sort:{"score":-1}},
    {$limit:10}
], { allowDiskUse: true })

PS

  1. MongoDB查询时content字段加不加索引性能无明显差距。
  2. MongoDB分组为内存操作会导致内存溢出,需设置allowDiskUse为true。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值