Elasticsearch按照某个字段去重查询

索引较多:

index-1_t_order
index-2_t_order
index-32_t_order

根据pay_amount排序,order_no去重,最后分页。

说明:
1、collapse:去重得到去重后的记录,配合"from": 0, "size": 1分页得到结果;(注意:此处查询返回的total-hits不是去重后的结果数量,而是命中的记录数,要获取去重后的记录数要使用cardinality)

2、cardinality:得到去重统计结果

复制代码
GET /index-*_t_order/_search
{
  "from": 0,
  "size": 1,
  "track_total_hits": true,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "push_time": {
              "gte": "2022-02-08",
              "lte": "2022-02-09",
              "time_zone": "+08:00"
            }
          }
        },
        {
          "terms": {
            "org_code.keyword": [
              "00T0024",
              "00T0025"
            ]
          }
        }
      ]
    }
  },
  "sort": [
    {
      "pay_amount": {
        "order": "desc"
      }
    }
  ],
  "collapse": {
    "field": "order_no.keyword"
  },
  "aggregations": {
    "count": {
      "cardinality": {
        "field": "order_no.keyword"
      }
    }
  }
}
复制代码

 参考:官方文档1      官方文档2

posted @   下午喝什么茶  阅读(1039)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示