关于全文检索聚合查询(Aggregations)的简单说明

数据库中的count/min/max/avg group by在全文检索中称为聚合查询

查询条件中使用aggregations属性:

"aggregations" : {
    "<aggregation_name>" : {
        "<aggregation_type>" : {
            <aggregation_body>
        }
        [,"meta" : {  [<meta_data_body>] } ]?
        [,"aggregations" : { [<sub_aggregation>]+ } ]?
    }
    [,"<aggregation_name_2>" : { ... } ]*
}

例如:

"aggregations": {
    "STOREID": {
      "terms": {
        "field": "bill.STOREID",
        "order": {
          "_term": "desc"
        }
      },
      "aggregations": {
        "COUNTStore": {
          "value_count": {
            "field": "_index"
          }
        },
        "MAXGOODSID": {
          "max": {
            "field": "id"
          }
        }
      }
    }
  }
  1. 根据storeID进行了分组查询
  2. 分组后,查询了所有匹配的记录条数,和其中最大的索引ID
聚合查询后,可能出现无法按照文档说明那样,查找查询匹配度 score 值,如:
"max": {
     "filed": "_score"
}

如何但是如果想要得到score也是可行的,只要如此:

  1. aggregations的指标属性(Metrics)设置为:
    "max": {
         "script": "_score"
    }

  2. 光这样可能查询报错:scripts of type [inline], operation [aggs] and lang [groovy] are disabled,那么只需在配置文件elasticsearch.yml里添加一些参数:
    script.inline: on
    script.indexed: on
    script.engine.groovy.inline.aggs: on
    script.engine.groovy.inline.update: on

就能在聚合查询是,对score做max,min,avg了 可以参考​https://elasticsearch.cn/question/794

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值