easy-es/dist/pages/b508b3/index.html
laohanjianshen 585dc0608e 新官网
2022-06-28 21:35:06 +08:00

178 lines
45 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>聚合查询 | Easy-Es</title>
<meta name="generator" content="VuePress 1.9.7">
<link rel="icon" href="/img/logo.svg">
<script async="true" src="https://cdn.wwads.cn/js/makemoney.js" type="text/javascript"></script>
<script>
// 万维广告“禁止”广告拦截
// function called if wwads is blocked
// https://github.com/bytegravity/whitelist-wwads
function ABDetected() {
var adBlockDetected_div = document.createElement("div");
document.body.appendChild(adBlockDetected_div);
var navbar = document.querySelector(".navbar");
navbar.style.cssText="transition:top 300ms;top:33px";
adBlockDetected_div.style.cssText = "position: fixed; top: 0; left: 0; width: 100%; background: #E01E5A; color: #fff; z-index: 9999999999; font-size: 14px; text-align: center; line-height: 1.5; font-weight: bold; padding-top: 6px; padding-bottom: 6px;";
adBlockDetected_div.innerHTML = "我们的广告服务商 <a style='color:#fff;text-decoration:underline' target='_blank' href='https://wwads.cn/page/end-user-privacy'>并不跟踪您的隐私</a>,为了支持本站的长期运营,请将我们的网站 <a style='color: #fff;text-decoration:underline' target='_blank' href='https://wwads.cn/page/whitelist-wwads'>加入广告拦截器的白名单</a>。";
document.getElementsByTagName("body")[0].appendChild(adBlockDetected_div);
// add a close button to the right side of the div
var adBlockDetected_close = document.createElement("div");
adBlockDetected_close.style.cssText = "position: absolute; top: 0; right: 10px; width: 30px; height: 30px; background: #E01E5A; color: #fff; z-index: 9999999999; line-height: 30px; cursor: pointer;";
adBlockDetected_close.innerHTML = "×";
adBlockDetected_div.appendChild(adBlockDetected_close);
// add a click event to the close button
adBlockDetected_close.onclick = function() {
this.parentNode.parentNode.removeChild(this.parentNode);
navbar.style.cssText="transition:top 300ms;top:0";
};
}
function vote() {
var voteDetected_div = document.createElement("div");
voteDetected_div.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; background: #7bbfea; color: #fff; z-index: 9999999999; font-size: 14px; text-align: center; line-height: 1.5; font-weight: bold; padding-top: 6px; padding-bottom: 6px;";
voteDetected_div.innerHTML = "<a style='color:#fff;text-decoration:underline' target='_blank' href='xxxxxx'>LiteFlow 正在参与“2021年度 OSC 中国开源项目”评选,请为我们投上宝贵的一票,谢谢!</a>";
document.getElementsByTagName("body")[0].appendChild(voteDetected_div);
voteDetected_div.onclick = function() {
this.remove();
};
}
function docReady(t) {
"complete" === document.readyState ||
"interactive" === document.readyState
? setTimeout(t, 1)
: document.addEventListener("DOMContentLoaded", t);
}
//check if wwads' fire function was blocked after document is ready with 3s timeout (waiting the ad loading)
docReady(function () {
setTimeout(function () {
if( window._AdBlockInit === undefined ){
ABDetected();
}
}, 3000);
});
</script>
<meta name="description" content="傻瓜级ElasticSearch搜索引擎ORM框架">
<meta name="keywords" content="liteflow,liteflow官网,规则引擎,流程引擎,开源,java规则引擎,rule engine,open source">
<meta name="theme-color" content="#11a8cd">
<meta name="wwads-cn-verify" content="6c4b761a28b734fe93831e3fb400ce87">
<link rel="preload" href="/assets/css/0.styles.71631971.css" as="style"><link rel="preload" href="/assets/js/app.dffb780e.js" as="script"><link rel="preload" href="/assets/js/2.ae2399cf.js" as="script"><link rel="preload" href="/assets/js/26.cba464b2.js" as="script"><link rel="prefetch" href="/assets/js/10.4662883c.js"><link rel="prefetch" href="/assets/js/11.86786ad3.js"><link rel="prefetch" href="/assets/js/12.59244a9b.js"><link rel="prefetch" href="/assets/js/13.9a702316.js"><link rel="prefetch" href="/assets/js/14.c7f528a4.js"><link rel="prefetch" href="/assets/js/15.60d6541f.js"><link rel="prefetch" href="/assets/js/16.0cc4e33d.js"><link rel="prefetch" href="/assets/js/17.9e7ed1bb.js"><link rel="prefetch" href="/assets/js/18.85a6012d.js"><link rel="prefetch" href="/assets/js/19.d00a06db.js"><link rel="prefetch" href="/assets/js/20.0c45c443.js"><link rel="prefetch" href="/assets/js/21.b01e3dd8.js"><link rel="prefetch" href="/assets/js/22.19b7c6e9.js"><link rel="prefetch" href="/assets/js/23.bfe8ee88.js"><link rel="prefetch" href="/assets/js/24.019c4155.js"><link rel="prefetch" href="/assets/js/25.3abb42f0.js"><link rel="prefetch" href="/assets/js/27.600fb5f6.js"><link rel="prefetch" href="/assets/js/28.0f3e3129.js"><link rel="prefetch" href="/assets/js/29.26187e5d.js"><link rel="prefetch" href="/assets/js/3.9bed2644.js"><link rel="prefetch" href="/assets/js/30.82ed81b3.js"><link rel="prefetch" href="/assets/js/31.7e645eec.js"><link rel="prefetch" href="/assets/js/32.250aacd0.js"><link rel="prefetch" href="/assets/js/33.cdd6e732.js"><link rel="prefetch" href="/assets/js/34.5df37364.js"><link rel="prefetch" href="/assets/js/35.9b536766.js"><link rel="prefetch" href="/assets/js/36.61cc3afd.js"><link rel="prefetch" href="/assets/js/37.ec29b472.js"><link rel="prefetch" href="/assets/js/38.7ff1bc74.js"><link rel="prefetch" href="/assets/js/39.1e998fde.js"><link rel="prefetch" href="/assets/js/4.ff5881ba.js"><link rel="prefetch" href="/assets/js/40.58cc87fe.js"><link rel="prefetch" href="/assets/js/41.25979c3d.js"><link rel="prefetch" href="/assets/js/42.ea91845c.js"><link rel="prefetch" href="/assets/js/43.878163cb.js"><link rel="prefetch" href="/assets/js/44.922896ef.js"><link rel="prefetch" href="/assets/js/45.8a0b42b7.js"><link rel="prefetch" href="/assets/js/5.a45d370b.js"><link rel="prefetch" href="/assets/js/6.88a99593.js"><link rel="prefetch" href="/assets/js/7.6ca3dc74.js"><link rel="prefetch" href="/assets/js/8.32b0893f.js"><link rel="prefetch" href="/assets/js/9.54eecf7f.js">
<link rel="stylesheet" href="/assets/css/0.styles.71631971.css">
</head>
<body class="theme-mode-light">
<div id="app" data-server-rendered="true"><div class="theme-container sidebar-open have-rightmenu"><header class="navbar blur"><div title="目录" class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/img/logo.png" alt="Easy-Es" class="logo"> <span class="site-name can-hide">Easy-Es</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">首页</a></div><div class="nav-item"><a href="/pages/ec7460/" class="nav-link">文档</a></div><div class="nav-item"><a href="/pages/fb599d/" class="nav-link">💖支持</a></div><div class="nav-item"><a href="/pages/1a819d/" class="nav-link">🌻生态</a></div><div class="nav-item"><a href="/pages/55wa9d/" class="nav-link">🚀关于项目</a></div><div class="nav-item"><a href="/pages/kd129d/" class="nav-link">加入社区讨论</a></div><div class="nav-item"><a href="/pages/7d828w/" class="nav-link">参与贡献</a></div><div class="nav-item"><a href="/pages/6f829d/" class="nav-link">谁在使用</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="💞推荐" class="dropdown-title"><!----> <span class="title" style="display:;">💞推荐</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://gitee.com/easy-es/fit-plan" target="_blank" rel="noopener noreferrer" class="nav-link external">
健身计划一键生成系统
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div><div class="nav-item"><a href="https://gitee.com/dromara/easy-es" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://github.com/dromara/easy-es" target="_blank" rel="noopener noreferrer" class="nav-link external">
Github
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="💫语言选择" class="dropdown-title"><!----> <span class="title" style="display:;">💫语言选择</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://easy-es.cn" target="_blank" rel="noopener noreferrer" class="nav-link external">
简体中文
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://en.easy-es.cn" target="_blank" rel="noopener noreferrer" class="nav-link external">
English
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar-hover-trigger"></div> <aside class="sidebar" style="display:none;"><!----> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link">首页</a></div><div class="nav-item"><a href="/pages/ec7460/" class="nav-link">文档</a></div><div class="nav-item"><a href="/pages/fb599d/" class="nav-link">💖支持</a></div><div class="nav-item"><a href="/pages/1a819d/" class="nav-link">🌻生态</a></div><div class="nav-item"><a href="/pages/55wa9d/" class="nav-link">🚀关于项目</a></div><div class="nav-item"><a href="/pages/kd129d/" class="nav-link">加入社区讨论</a></div><div class="nav-item"><a href="/pages/7d828w/" class="nav-link">参与贡献</a></div><div class="nav-item"><a href="/pages/6f829d/" class="nav-link">谁在使用</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="💞推荐" class="dropdown-title"><!----> <span class="title" style="display:;">💞推荐</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://gitee.com/easy-es/fit-plan" target="_blank" rel="noopener noreferrer" class="nav-link external">
健身计划一键生成系统
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div><div class="nav-item"><a href="https://gitee.com/dromara/easy-es" target="_blank" rel="noopener noreferrer" class="nav-link external">
Gitee
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://github.com/dromara/easy-es" target="_blank" rel="noopener noreferrer" class="nav-link external">
Github
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="💫语言选择" class="dropdown-title"><!----> <span class="title" style="display:;">💫语言选择</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://easy-es.cn" target="_blank" rel="noopener noreferrer" class="nav-link external">
简体中文
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://en.easy-es.cn" target="_blank" rel="noopener noreferrer" class="nav-link external">
English
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>快速入门</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/pages/ec7460/" class="sidebar-link">简介</a></li><li><a href="/pages/258e80/" class="sidebar-link">适用场景</a></li><li><a href="/pages/6e2197/" class="sidebar-link">顾虑粉碎</a></li><li><a href="/pages/0867bd/" class="sidebar-link">避坑指南</a></li><li><a href="/pages/949ac4/" class="sidebar-link">快速开始</a></li><li><a href="/pages/12283a/" class="sidebar-link">springboot集成demo</a></li><li><a href="/pages/9a3e4c/" class="sidebar-link">配置</a></li><li><a href="/pages/4eb7db/" class="sidebar-link">注解</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>核心功能</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/pages/06b5d9/" class="sidebar-link">索引处理</a></li><li><a href="/pages/c5999a/" class="sidebar-link">CRUD接口</a></li><li><a href="/pages/1cebb8/" class="sidebar-link">条件构造器</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>拓展功能</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/pages/a19563/" class="sidebar-link">混合查询</a></li><li><a href="/pages/4446a5/" class="sidebar-link">原生查询</a></li><li><a href="/pages/0cf11e/" class="sidebar-link">分页查询</a></li><li><a href="/pages/05702c/" class="sidebar-link">嵌套类型</a></li><li><a href="/pages/0bbd7e/" class="sidebar-link">父子类型</a></li><li><a href="/pages/981130/" class="sidebar-link">获取DSL语句</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>高阶语法</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/pages/c9c57f/" class="sidebar-link">查询字段过滤</a></li><li><a href="/pages/274da8/" class="sidebar-link">排序</a></li><li><a href="/pages/b508b3/" aria-current="page" class="active sidebar-link">聚合查询</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/pages/b508b3/#常规聚合" class="sidebar-link">常规聚合</a></li><li class="sidebar-sub-header level2"><a href="/pages/b508b3/#其它聚合" class="sidebar-link">其它聚合:</a></li><li class="sidebar-sub-header level2"><a href="/pages/b508b3/#去重聚合" class="sidebar-link">去重聚合</a></li></ul></li><li><a href="/pages/2688d1/" class="sidebar-link">分词查询</a></li><li><a href="/pages/e6fc8d/" class="sidebar-link">权重</a></li><li><a href="/pages/899c12/" class="sidebar-link">高亮查询</a></li><li><a href="/pages/39b41e/" class="sidebar-link">GEO地理位置查询</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>插件</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/pages/6431d1/" class="sidebar-link">插件</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>其它</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/pages/453119/" class="sidebar-link">问答</a></li><li><a href="/pages/98d3d3/" class="sidebar-link">与MP差异</a></li><li><a href="/pages/6fea40/" class="sidebar-link">MySQL和EE语法对比</a></li><li><a href="/pages/b65406/" class="sidebar-link">更新日志</a></li><li><a href="/pages/e14b42/" class="sidebar-link">更新计划</a></li><li><a href="/pages/796d01/" class="sidebar-link">版权</a></li><li><a href="/pages/4d7703/" class="sidebar-link">鸣谢</a></li></ul></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="articleInfo-wrap" data-v-06225672><div class="articleInfo" data-v-06225672><ul class="breadcrumbs" data-v-06225672><li data-v-06225672><a href="/" title="首页" class="iconfont icon-home router-link-active" data-v-06225672></a></li> <li data-v-06225672><span data-v-06225672>0.0</span></li><li data-v-06225672><span data-v-06225672>高阶语法</span></li></ul> <div class="info" data-v-06225672><div title="作者" class="author iconfont icon-touxiang" data-v-06225672><a href="https://gitee.com/easy-es/" target="_blank" title="作者" class="beLink" data-v-06225672>老汉</a></div> <div title="创建时间" class="date iconfont icon-riqi" data-v-06225672><a href="javascript:;" data-v-06225672>2022-06-21</a></div> <!----></div></div></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABH1JREFUSA3tVl1oHFUUPmdmd2ltklqbpJDiNnXFmgbFktho7YMPNiJSSZM0+CAYSkUELVhM6YuwIPpgoOKDqOBDC0XE2CQoNtQXBUFTTcCi+Wlh1V2TQExsUzcltd3M9Tt3ZjZzZ2fT+OJTL8yeM+eee757fmeJbq//KQL8X3DUSFOcfr7cRsRtxNQMWueeVzOkaITIGqQHNg5y8+jNW9ldM7A6nTpAjuolUikAwq7CE3WcM2RRDz+XGVgN3FptU/aUSlvq9Pa3iZ1+sgAqJyyAFqkipd9dqiwHF3P65YycLWc/6sqGrvoEoIp6DOFaX5h6+dnfjkWprwqsPk0dUGq5vySwDImC10KxFHgGL1SWoc92O3eVht09qdXNH11I2SsTsJYqMWzihqGMi+A+Garf3BAuuLI5oGlULyNfyB/HYNujwktOfRrMr5t77NmevqaUopx0grnKAyvVpmwUDB4x6FPXuGvYLTDwWsejwgtgkYKPqRJg8SV6xaiZ3ZTppGneS4yfH5/66fZSDHv+QZci/+h5c5UHtpy67JUqGppM0sh0Nc1dW6/N1W5Yoqat8/TU/VnadmdeW2PLLSyh0cvxBs3KbqTmwYPpxN4do/mzE8nEpvX/UMu2Wbp74zUAK5q6WkHns7V0eWkdPbPzd3rxkTGybadYySumVzhcaJFbs5UrEkQ/+CK8gF5dnh/6ciIZ73gwQ927L1IitoxKLXYP3SjYdOrHHfTZhRRlFyrorafPk20B3HPD1y2G3qKZME5Jcf3t/HUC13/8tSd++vqFveMUTwAUxSUFI1QekR1+bIze3D9MF2aq6cPvG72CgnldWCFqyRw3lwH8ZMerjTD9ElRO7Gv44wNpC90aASqGfVlz/Rx17srQ57/UU26hkhQqUB7dBR71WmzQhHUnblGmVOEw0jhbV1n9OlXUDCIRGaNV5Jp43N516fN7JmnTHdfp7Hgy0luO4aMhtkLL8Bi3bUWYvzh5Mn1dTxrL6QmGuRhGL/TiTTxRoEdTszSaq9GR0NGA3KdkOz3hqSV3MIDhQ5IVX/Ivx3umBti2es2h4eZby7x8br1rkf7Mo90AqC8aQ3sJeNzqFRu+vSANAQe3PL7l0HGOAdwDCeZYvNKeoZp1Qfs6Aipndh86HmFRi0LAnEO47wsqM6cdfjh3jBPUzhZy7nvlUfFsamED1VQt6aISHVymXZ/B2aCtIG8AI8xfobj2d3en1wWVhOeHELKmLQ1s211s88comkv4UCwWyF787mJdYXtNfhKAXVqnKTq8QZvGAGGOfaTo5pGZ/PwbUCr5+DPr/1J92JNHr9aOl/F3iI5+O1nfybsGxoimvZ3ViWSluDITw3P37mypheDIPY0tw7+O/5ApbkYw+zpfaUVu32Pi98+defdUhEpZkRFq0aqyNh9FuL9hpYbEm6iwi0z2REd09ZmyENEbuhjDWzKvZXTqKYaBIr3tt5kuPtQBZFvEUwHt60vfCNu41XsksH9Ij1BMMz1Y0OOunHNShFIP5868g5zeXmuLwL9T4b6Q2+KejgAAAABJRU5ErkJggg==">聚合查询<!----></h1> <div class="page-slot page-slot-top">
<div class="wwads-cn wwads-horizontal page-ad" data-id="129" style="width:100%;max-height:80px;min-height:auto;"></div>
<style>
.page-ad img{
width:80px!important;
}
.wwads-horizontal .wwads-content{
display: flex;
align-items: center;
}
.wwads-horizontal .wwads-text, .wwads-content .wwads-text{
line-height:1;
flex: 1;
height: 100%;
display: flex;
align-items: center;
}
.wwads-horizontal .wwads-poweredby, .wwads-vertical .wwads-poweredby{display: none;!important;}
</style>
</div> <div class="theme-vdoing-content content__default"><div class="custom-block tip"><p class="custom-block-title">前言</p> <p>聚合可以算得上ES中最难用的一部分了其API也是最反人类的懂的都懂。对聚合的支持SpringData-ElasticSearch直接放弃了EE对其ES的聚合的简化也比较有限尽管如此也算得上目前市面上开源框架中对ES聚合支持得最好的框架了大家在用得时候请轻喷在聚合方式排列组合有上千种以及灵活多变的树形桶得数据解析上我们真的尽力了奉劝大家抛弃幻想准备迎接挑战这不是MySQL。ES的聚合和MySQL的聚合完全是两种不同的东西。
您现在看到的聚合也绝对不是EE对聚合支持的最终形态我们还会持续探索进一步简化聚合来减轻用户使用ES聚合功能的烦恼。</p></div> <h2 id="常规聚合"><a href="#常规聚合" class="header-anchor">#</a> 常规聚合</h2> <p>在MySQL中,我们可以通过指定字段进行group by聚合,EE同样也支持类似聚合:</p> <div class="language-java line-numbers-mode"><pre class="language-java"><code> <span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">testGroupBy</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token class-name">LambdaEsQueryWrapper</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Document</span><span class="token punctuation">&gt;</span></span> wrapper <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LambdaEsQueryWrapper</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
wrapper<span class="token punctuation">.</span><span class="token function">likeRight</span><span class="token punctuation">(</span><span class="token class-name">Document</span><span class="token operator">::</span><span class="token function">getContent</span><span class="token punctuation">,</span><span class="token string">&quot;&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
wrapper<span class="token punctuation">.</span><span class="token function">groupBy</span><span class="token punctuation">(</span><span class="token class-name">Document</span><span class="token operator">::</span><span class="token function">getCreator</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 支持多字段聚合</span>
<span class="token comment">// wrapper.groupBy(Document::getCreator,Document::getCreator);</span>
<span class="token class-name">SearchResponse</span> response <span class="token operator">=</span> documentMapper<span class="token punctuation">.</span><span class="token function">search</span><span class="token punctuation">(</span>wrapper<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>response<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><div class="custom-block tip"><p class="custom-block-title">温馨提示</p> <p>尽管语法与MP一致,但实际上,ES的聚合结果是放在单独的对象中的,格式如下所示,因此我们高阶语法均需要用SearchResponse来接收返回结果,这点需要区别于MP和MySQL.</p></div> <div class="language-json line-numbers-mode"><pre class="language-json"><code><span class="token property">&quot;aggregations&quot;</span><span class="token operator">:</span><span class="token punctuation">{</span><span class="token property">&quot;sterms#creator&quot;</span><span class="token operator">:</span><span class="token punctuation">{</span><span class="token property">&quot;doc_count_error_upper_bound&quot;</span><span class="token operator">:</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token property">&quot;sum_other_doc_count&quot;</span><span class="token operator">:</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token property">&quot;buckets&quot;</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">&quot;key&quot;</span><span class="token operator">:</span><span class="token string">&quot;老汉&quot;</span><span class="token punctuation">,</span><span class="token property">&quot;doc_count&quot;</span><span class="token operator">:</span><span class="token number">2</span><span class="token punctuation">}</span><span class="token punctuation">,</span><span class="token punctuation">{</span><span class="token property">&quot;key&quot;</span><span class="token operator">:</span><span class="token string">&quot;老王&quot;</span><span class="token punctuation">,</span><span class="token property">&quot;doc_count&quot;</span><span class="token operator">:</span><span class="token number">1</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h2 id="其它聚合"><a href="#其它聚合" class="header-anchor">#</a> 其它聚合:</h2> <div class="language-json line-numbers-mode"><pre class="language-json"><code><span class="token comment">// 求最小值</span>
wrapper.min();
<span class="token comment">// 求最大值</span>
wrapper.max();
<span class="token comment">// 求平均值</span>
wrapper.avg();
<span class="token comment">// 求和</span>
wrapper.sum();
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><p>如果需要先groupBy,再根据groupBy聚合后桶中的数据进行求最值,均值之类的,也是支持的,会按照您在wrapper中指定的顺序,管道聚合(pipeline aggregation).</p> <p>示例:</p> <div class="language-java line-numbers-mode"><pre class="language-java"><code> <span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">testAgg</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// 根据创建者聚合,聚合完在该桶中再次根据点赞数聚合</span>
<span class="token comment">// 注意:指定的多个聚合参数为管道聚合,就是第一个聚合参数聚合之后的结果,再根据第二个参数聚合,对应Pipeline聚合</span>
<span class="token class-name">LambdaEsQueryWrapper</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Document</span><span class="token punctuation">&gt;</span></span> wrapper <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LambdaEsQueryWrapper</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
wrapper<span class="token punctuation">.</span><span class="token function">eq</span><span class="token punctuation">(</span><span class="token class-name">Document</span><span class="token operator">::</span><span class="token function">getTitle</span><span class="token punctuation">,</span> <span class="token string">&quot;老汉&quot;</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">groupBy</span><span class="token punctuation">(</span><span class="token class-name">Document</span><span class="token operator">::</span><span class="token function">getCreator</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span><span class="token class-name">Document</span><span class="token operator">::</span><span class="token function">getStarNum</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">SearchResponse</span> response <span class="token operator">=</span> documentMapper<span class="token punctuation">.</span><span class="token function">search</span><span class="token punctuation">(</span>wrapper<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>response<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><blockquote><p>另外EE还提供了可以配置是否开启管道聚合的参数,默认为开启,如果你想让多个字段聚合的结果出现在各自的桶中,那么你可以指定enablePipeline参数为false即可.</p></blockquote> <div class="language-java line-numbers-mode"><pre class="language-java"><code> <span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">testAggNotPipeline</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// 对于下面两个字段,如果不想以pipeline管道聚合,各自聚合的结果在各自的桶中展示的话,我们也提供了支持</span>
<span class="token class-name">LambdaEsQueryWrapper</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Document</span><span class="token punctuation">&gt;</span></span> wrapper <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LambdaEsQueryWrapper</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// 指定启用管道聚合为false</span>
wrapper<span class="token punctuation">.</span><span class="token function">groupBy</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">,</span> <span class="token class-name">Document</span><span class="token operator">::</span><span class="token function">getCreator</span><span class="token punctuation">,</span> <span class="token class-name">Document</span><span class="token operator">::</span><span class="token function">getTitle</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">SearchResponse</span> response <span class="token operator">=</span> documentMapper<span class="token punctuation">.</span><span class="token function">search</span><span class="token punctuation">(</span>wrapper<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>response<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><h2 id="去重聚合"><a href="#去重聚合" class="header-anchor">#</a> 去重聚合</h2> <blockquote><p>为了方便用户去重,我们针对字段的去重提供了极为友好的方式,解决用户根据字段进行去重及分页要写大量代码来实现的烦恼,使用ee单字段去重仅需1行即可搞定!</p></blockquote> <p>API:</p> <div class="language-java line-numbers-mode"><pre class="language-java"><code> <span class="token comment">// 去重,入参为去重列</span>
wrapper<span class="token punctuation">.</span><span class="token function">distinct</span><span class="token punctuation">(</span><span class="token class-name">R</span> column<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>下面我用一段代码来演示根据指定字段去重:</p> <div class="language-java line-numbers-mode"><pre class="language-java"><code> <span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">testDistinct</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// 查询所有标题为老汉的文档,根据创建者去重,并分页返回</span>
<span class="token class-name">LambdaEsQueryWrapper</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Document</span><span class="token punctuation">&gt;</span></span> wrapper <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">LambdaEsQueryWrapper</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
wrapper<span class="token punctuation">.</span><span class="token function">eq</span><span class="token punctuation">(</span><span class="token class-name">Document</span><span class="token operator">::</span><span class="token function">getTitle</span><span class="token punctuation">,</span> <span class="token string">&quot;老汉&quot;</span><span class="token punctuation">)</span>
<span class="token punctuation">.</span><span class="token function">distinct</span><span class="token punctuation">(</span><span class="token class-name">Document</span><span class="token operator">::</span><span class="token function">getCreator</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">PageInfo</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Document</span><span class="token punctuation">&gt;</span></span> pageInfo <span class="token operator">=</span> documentMapper<span class="token punctuation">.</span><span class="token function">pageQuery</span><span class="token punctuation">(</span>wrapper<span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>pageInfo<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><div class="custom-block tip"><p class="custom-block-title">坏味道</p> <p>对于多字段的去重支持,没有上述这么简单,因为多字段去重无法通过折叠去实现,数据会被置入桶中返回,桶中数据的解析,需要哪些字段,排序规则,覆盖规则是怎样的过于灵活,我们无法通过框架来帮用户屏蔽这些,市面上目前也无任何框架能够支撑,因此,我们对多字段的去重仅支持到了查询条件的封装,数据解析部分需用户自行完成,敬请谅解.好在多字段去重的场景并不是太多,用户如果有用到多字段去重可参见本篇开头对groupBy的介绍可通过groupBy对多字段实现去重。</p></div></div></div> <div class="page-edit"><div class="edit-link"><a href="https://github.com/xpc1024/ee-home/edit/master/docs/v1.0.0/040.高阶语法/030.聚合查询.md" target="_blank" rel="noopener noreferrer">帮助我们改善此文档</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <!----> <div class="last-updated"><span class="prefix">上次更新:</span> <span class="time">2022/06/28, 17:45:31</span></div></div> <div class="page-nav-wapper"><div class="page-nav-centre-wrap"><a href="/pages/274da8/" class="page-nav-centre page-nav-centre-prev"><div class="tooltip">排序</div></a> <a href="/pages/2688d1/" class="page-nav-centre page-nav-centre-next"><div class="tooltip">分词查询</div></a></div> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/pages/274da8/" class="prev">排序</a></span> <span class="next"><a href="/pages/2688d1/">分词查询</a>
</span></p></div></div></div> <!----></main></div> <div class="footer"><div class="icons"><a href="mailto:xpc@dromara.com" title="Mail" target="_blank" class="iconfont icon-youjian"></a><a href="https://gitee.com/dromara/easy-es" title="Gitee" target="_blank" class="iconfont icon-gitee"></a><a href="https://github.com/dromara/easy-es" title="GitHub" target="_blank" class="iconfont icon-github"></a></div>
Theme by
<a href="https://github.com/xugaoyi/vuepress-theme-vdoing" target="_blank" title="本站主题">Vdoing</a>
| Copyright © 2022-2022
<span><a href="https://gitee.com/easy-es/">老汉</a>| MIT License</span></div> <div class="buttons"><div title="返回顶部" class="button blur go-to-top iconfont icon-fanhuidingbu" style="display:none;"></div> <div title="去评论" class="button blur go-to-comment iconfont icon-pinglun" style="display:none;"></div> <div title="主题模式" class="button blur theme-mode-but iconfont icon-zhuti"><ul class="select-box" style="display:none;"><li class="iconfont icon-zidong">
跟随系统
</li><li class="iconfont icon-rijianmoshi">
浅色模式
</li><li class="iconfont icon-yejianmoshi">
深色模式
</li><li class="iconfont icon-yuedu">
阅读模式
</li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
<script src="/assets/js/app.dffb780e.js" defer></script><script src="/assets/js/2.ae2399cf.js" defer></script><script src="/assets/js/26.cba464b2.js" defer></script>
</body>
</html>