elasticsearch字段类型参数doc_values设置为false后不能用于聚合

首先定义一个索引的字段:

PUT /idx5
{
  "mappings":{
    "properties": {
      "nodocvals": {
        "type": "long",
        "doc_values":false
      },
      "yesdocval":{
        "type":"long",
        "doc_values":true
      },
      "cnt":{
        "type":"long"
      }
    }
  }
}

其中两个字段的doc_values参数一个设置为true,一个设置为false

然后添加文档:

PUT /idx5/_doc/1
{
  "nodocvals":1,
  "yesdocval":1,
  "cnt":1
}

然后执行聚合操作:

GET /idx5/_search
{
  "aggs": {
    "grpfd": {
      "terms": {
        "field": "nodocvals"
      },
      "aggs": {
        "avgfd": {
          "avg": {
            "field": "cnt"
          }
        }
      }
    }
  }
}

用的聚合字段是nodocvals,它的doc_values定义为了false,然后就会报错:

 "type" : "illegal_argument_exception",
"reason" : "Can't load fielddata on [nodocvals] because fielddata is unsupported on fields of type [long]. Use doc values instead."

里面提到Use doc values instead,换成yesdocval字段来聚合,它的doc_values定义为了true,就不报错了:

GET /idx5/_search
{
  "aggs": {
    "grpfd": {
      "terms": {
        "field": "yesdocval"
      },
      "aggs": {
        "avgfd": {
          "avg": {
            "field": "cnt"
          }
        }
      }
    }
  }
}

返回了结果:

...
"grpfd" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : 1,
          "doc_count" : 1,
          "avgfd" : {
            "value" : 1.0
          }
        }
      ]
    }
...

给TA买糖
共{{data.count}}人
人已赞赏
java

求100以内的素数

2020-6-17 14:14:55

java

spark流不能不groupby就直接count

2021-1-26 21:31:50

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索