ES的使用摺疊實現分組去重

2022-07-01 20:24:15 字數 776 閱讀 9114

最近用到使用es按指定欄位對資料去重,之前沒怎麼用過es,網上找es分組的資料。發現較多資料提到es的聚合查詢,效果類似mysql的 select uid, count(uid) from table group by uid。

但這不是我想要的效果,mysql的按組查詢各組最新的一條資料。

上谷歌找到博文:

按著改了查詢條件:

$params['collapse'] =[

"field"=> "uid", //

要進行摺疊的字段

// "inner_hits" => [ //摺疊的引數集

// "name"=> "hits", //摺疊的name,目前沒有發現**有用到的地方,可能在多個摺疊情況下有用

//from和size用來控制想要返回的摺疊列表,這裡我的需求是重複id相同僅返回頭條,所以兩個引數均設定為0

//如果有需求摺疊列表的可以通過這裡控制

// "from"=> 0,

// "size"=> 10,

// "version"=> false,

// "explain"=> false,

// "track_scores"=> true,

// "sort" => ,

// ]

];

列印查詢結果可見資料已經按uid去重,如果要拿到摺疊資料,將取消注釋的**再次提交即可,如果摺疊內容需要增加排序,將排序規則加入collapse的sort即可。

ES6實現陣列去重

es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。array.from方法可以將 set 結構轉為陣列。例如 const items newset 1,2,3,4,5 const array array.from items 利用這些特點可以得出兩種陣列去重的方...

ES6實現陣列去重

es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。array.from方法可以將 set 結構轉為陣列。例如 const items new set 1,2,3,4,5 const array array.from items 利用這些特點可以得出兩種陣列去重的...

JS實現陣列去重及陣列內物件去重(es5和es6)

寫專案的時候一定遇到過這種邏輯需求,就是給乙個陣列進行去重處理,還有一種就是給陣列內的物件根據某乙個屬性,比如id,進行去重,下面的兩個函式,都是可以達到這個效果的,乙個是純es5的去重辦法,乙個是用了es6的array.from new set 和es5的reduce來進行去重。下面先定義兩個陣列...