ES语句如下:{ "query": { "bool": { "should": [ { "match": { "erpSupplierFlowId": "1001E111230001IPJP6W" } }, { "match": { "erpSupplierFlowId": "1001A110000001CBWJ0I" } } ] } }, //设置为0代表只需要聚合的结果 "size": 0, "track_total_hits": false, "aggs": { "my_buckets": { "composite": { //存上一个位置游标,查找下一页,如果往前翻页,前端给after,每次翻页,前端存一个after数组,下标对应页数 // "after": { // "erpGoodsId": "P100009", // "batchNum": "2201055103" // }, "size": 10, "sources": [ { "erpGoodsId": { "terms": { "field": "erpGoodsId", "order": "asc" } } }, { "batchNum": { "terms": { "field": "batchNum", "order": "asc" } } }, { "wmsProductCode": { "terms": { "field": "wmsProductCode", "missing": "null", "order": "asc" } } } ] }, "aggs": { "filter_empty_dest": { "bucket_selector": { "buckets_path": { "count": "_count" }, "script": "params.count != null" } } } } } }
时间: 2023-07-12 15:05:20 浏览: 83
es基本查询,query match term bool should ,and ,put ,post等操作
这是一个Elasticsearch查询语句,作用是聚合查询指定的两个"erpSupplierFlowId"值,并按照"erpGoodsId"、"batchNum"、"wmsProductCode"三个字段进行分组聚合,每组聚合结果的数量不超过10个。
具体的实现方式是使用布尔查询进行两个"erpSupplierFlowId"的匹配,然后使用复合聚合(composite aggregation)对分组字段进行聚合。在聚合的结果中,使用"bucket_selector"过滤掉聚合结果数量为0的分组。最后返回的结果中不包含实际文档,只有聚合分组的信息。
阅读全文