最近遇到乙個es資料查詢去重的需求,我這邊需要的是獲取去重後的結果,查詢官網資料和各位大神的經驗後,總結一下elasticsearch去重查詢功能。
關係型資料庫中,比如mysql,可以通過distinct進行去重,一般分為兩種:
select
distinct
(count(1
))from test;
select
distinct name,*** from person;
test,person為對應的表名。
elasticsearch類似功能的實現方式
可以通過es head外掛程式來進行查詢測試,user_onoffline_log是有的索引名字,uid是其中的乙個字段,uid_aggs是聚合的名字,可以隨便自定義。
post user_onoffline_log/_search},
"size":0
,"aggs":}
}}
結果:
,"hits":,
"aggregations":}
}
可以看到uid欄位去重後的計數值為12243。
方式一:top_hits聚合
post
/user_onoffline_log/},
"aggs":,
"aggs":}
],"size":1
}}}}
},"size":0
}
可以通過size設定顯示的數量,上面aggs的size設定的1,結果:
}]
},"hits":,
"aggregations":,
"sort":[
""]}]
}}}]
}}}
方式二:摺疊
post
/user_onoffline_log/},
"collapse"
:}
方式二較方式一:
public
class
estest
}}
public
class
estest}}
}
Elasticsearch統計去重後的數量
elasticsearch 提供的首個近似聚合是cardinality 注 基數 度量。它提供乙個欄位的基數,即該字段的 distinct 或者 unique 值的數目。你可能會對 sql 形式比較熟悉 select count distinct color from cars去重是乙個很常見的操作...
備忘錄 elasticsearch 去重分頁查詢
一開始資料結構設計的很複雜,又是父子關係又是巢狀關係,結果發現不能通過簡單的查詢得到想要的結果 比如乙個商店只出現一件符合條件的商品,弄得查詢語句就變成這樣了 最後改了索引資訊的結構,不做關聯關係,全部平鋪,冗餘資料,發現查詢語句簡單多了,查詢語句變成如下 用 collapse 功能能從搜尋結果中去...
Elasticsearch6 X 去重統計詳解
elasticsearch有沒有類似mysql的distinct的去重功能呢?1 如何去重計數?類似mysql select distinct count 1 from my table 2 如何獲取去重結果。類似mysql select distinct name,age from users 1...