ES中使用nested型別的內嵌物件

2021-09-12 16:03:52 字數 1207 閱讀 6706

put articles

, "name": }}

}}

}}

這樣articles就有了payment這個nested型別的字段,payment裡面的物件有amount和name,表示金額和姓名。

產生如下資料,表示jack給文章1讚賞了29元,ross給文章1讚賞30元,ross給文章2讚賞31元。

post articles/doc/1

,

]}post articles/doc/2

]}

現在想查詢ross讚賞過的文章,需要使用nested query

get articles/_search}}

}}}

如果想檢視讚賞的平均金額,需要用nested aggregation

get articles/_search

, "aggs": }}

}}}

同樣注意要用path指定欄位名稱。返回的資料中,比普通的聚合查詢多了一層巢狀

返回結果為

,

"hits": ,

"aggregations":

}}}

如果想看ross讚賞過的總金額,一開始寫出query如下

get articles/_search}}

}},

"aggs": ,

"aggs": }}

}}}

此時結果並不是正確的,因為上面的query過濾的是ross讚賞過的文章,下面的聚合操作sum的是文章裡所有的讚賞,包括了jack的讚賞。

所以需要在sum聚合操作之前,需要用filter aggregation篩選ross的讚賞。

get articles/_search}}

}},

"aggs": ,

"aggs": }},

"aggs": }}

}}

}}}

最外層的query篩選出ross讚賞過的文章。

第一層的aggs表示進行內嵌聚合。

第二層的aggs用filter aggregation篩選出表示ross讚賞行為的nested物件。

第三層的aggs進行聚合。

ES實現nested型別聚合以及子聚合排序

針對日銷量索引,需要分析品牌 品類等日銷量趨勢,以及近7天,近30天等銷量靠前的品牌 品類等。涉及到 nested 聚合,以及聚合排序。指定日期範圍 趨勢,銷量趨勢查詢排序 品類近7天銷量 post goods sku sales2 v20200109 search aggs aggs aggs a...

WCF 中使用列舉型別

由於需要,在使用wcf技術中要用到列舉型別,於是乎,直接拿來用。如下所見 datacontract public enum filetype datacontract public class programfilerequest set 檔案型別 datamember public filetyp...

hibernate中使用enum型別

1.在pojo 實體類中定義了乙個customer 類和乙個枚舉子類partner.class customer class enum partner 在寫入資料庫的時候,可以選擇寫入int 型別或者string 型別.這個取決於配置.下面的配置是寫入字串到資料庫中 import j ax.pers...