有个人长的像洋葱,走着走着就哭了…….

关于murmur3,适合的使用字段类型和场景

Elasticsearch | 作者 BBao | 发布于2018年07月17日 | 阅读数:4352

阅读了关于murmur3的文档,https://www.elastic.co/guide/e ... .html
文中提到,在high cardinality 的时候,适合使用,可以提高计算速度。
 
文章结尾又不推荐在 numeric和string 字段使用,说大概率重复率高,占用很大的磁盘空间
 
那么什么字段什么场景适用murmur3使用。
 
服务器上当前es版本为5.2,针对imei字段进行cardinality操作,聚合后进行cardinality 执行时间大概在8s左右,比较慢
 
求教如何提高cardinality性能,或者下面的语句有优化空间么?
 
{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "terms":{
            "cpbinfo":["1500多个参数,多的可以2000"]
          }
        },
        {
          "range": {
            "timestamp": {
              "gte": 1531065600000,
              "lte": 1531756799000,
              "format": "epoch_millis"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "cpbinfoGroup":{
      "terms":{
        "field": "cpbinfo",
        "size": 1460
      },
      "aggs":{
        "uptimeSum":{
          "sum":{
            "field": "upDurMillis"
          }
        },
        "imeiNum":{
          "cardinality":{ -- 这里很慢
            "field":"imei",
            "precision_threshold": 100 -- 这里没什么显著效果
          }
        }
      }
    }
  }
}
 
还望赐教
已邀请:

BBao

赞同来自:

在terms的时候增加execution_hint:map ,在此查询中没有明显提升,反而会稍微慢100ms左右. 

要回复问题请先登录注册