zoukankan      html  css  js  c++  java
  • ES的使用折叠实现分组去重

      最近用到使用es按指定字段对数据去重,之前没怎么用过es,网上找es分组的资料。发现较多资料提到es的聚合查询,效果类似mysql的 select uid, count(uid) from table group by uid。

      但这不是我想要的效果,mysql的按组查询各组最新的一条数据。

     上谷歌找到博文:https://www.jianshu.com/p/ce47af084cf7

             https://blog.csdn.net/ctwy291314/article/details/82759215

      按着改了查询条件:

    $params['collapse'] = [
                        "field"=> "uid",              //要进行折叠的字段
                        // "inner_hits" => [             //折叠的参数集
                        //     "name"=> "hits",          //折叠的name,目前没有发现哪里有用到的地方,可能在多个折叠情况下有用
                            // "ignore_unmapped"=> true,  //默认为false,如果存在一些数据没有折叠字段的会报错,设置为true可以避免类似的报错
    
                            //from和size用来控制想要返回的折叠列表,这里我的需求是重复id相同仅返回头条,所以两个参数均设置为0
                            //如果有需求折叠列表的可以通过这里控制
                            // "from"=> 0,
                            // "size"=> 10,
                            // "version"=> false,
                            // "explain"=> false,
                            // "track_scores"=> true,
                            // "sort" => [],
                        // ]
                ];

    打印查询结果可见数据已经按uid去重,如果要拿到折叠数据,将取消注释的代码再次提交即可,如果折叠内容需要增加排序,将排序规则加入collapse的sort即可。

         

  • 相关阅读:
    PAT B1021 个位数统计 (15)
    PAT B1006 换个格式输出整数 (15)
    PAT A1058 A+B in Hogwarts (20)
    PAT A1027 Colors in Mars (20)
    PAT A1019 General Palindromic Number (20 分)
    PAT B1022 D进制的A+B
    J2EE
    MVC
    数据库长连接短连接
    twisted
  • 原文地址:https://www.cnblogs.com/wscsq789/p/14542724.html
Copyright © 2011-2022 走看看