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

far
far
far
2
文章
1
评论
2021年1月1日19:21:55 评论 60 882字阅读2分56秒

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

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
          }
        }
      ]
    }
...
far
PHP类库PHPqrCode下载 折腾笔录

PHP类库PHPqrCode下载

PHPqrCode简介 PHPqrCode是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo, PHPqrCode说明 下载官网提供的类库后,只需要使用php...
Seo小白如何成长为合格站长 折腾笔录

Seo小白如何成长为合格站长

eo所包括的东西确实有点多,所涉及到的概念也比较广泛,包含了网站的建设,网站的框架,页面的设计,优化,网站代码精简,内链设置,外链建设,seo小白,想要短时间成为一个合格的站长是非常不容易的,贵在坚持...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: