天天看點

Elasticsearch6.X 去重詳解

2、需求

1)對ES的檢索結果進行去重統計計數。

2)對ES的檢索結果去重後顯示

3、分析

1)統計計數需要借助ES聚合功能結合cardinality實作。

2)去重顯示結果有兩種方式:

方式一:使用字段聚合+top_hots聚合方式。

方式二:使用collapse折疊功能。

4、DSL源碼

1)統計去重數目。

GET books/_search

{

"size":0,

"aggs" : {

"books_count" : {

"cardinality" : {

"field" : "title.keyword"

}

1

2

3

4

5

6

7

8

9

10

11

2)傳回去重内容

方式一:top_hits聚合

"query": {

"match_all": {}

},

"aggs": {

"type": {

"terms": {

"field": "title.keyword",

"size": 10

"title_top": {

"top_hits": {

"_source": {

"includes": ["title"]

"sort": [

"title.keyword": {

"order": "desc"

],

"size":1

"size": 0

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

方式二:折疊

"match_all":{}

"collapse": {

"field": "title.keyword"

方式二較方式一:

1)簡化;

2)性能比aggs的實作要好很多。

更多DSL詳見:

http://t.cn/RmafXMJ

5、注意事項&小結

1、折疊功能ES5.3版本之後才釋出的。

2、聚合&折疊隻能針對keyword類型有效;

3、隻要思想不滑坡,方案總比問題多!

參考:

https://elasticsearch.cn/article/132

繼續閱讀