mirror of
https://gitee.com/dromara/easy-es.git
synced 2025-12-06 17:18:57 +08:00
178 lines
45 KiB
HTML
178 lines
45 KiB
HTML
<!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"><</span><span class="token class-name">Document</span><span class="token punctuation">></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"><</span><span class="token punctuation">></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">"推"</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">"aggregations"</span><span class="token operator">:</span><span class="token punctuation">{</span><span class="token property">"sterms#creator"</span><span class="token operator">:</span><span class="token punctuation">{</span><span class="token property">"doc_count_error_upper_bound"</span><span class="token operator">:</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token property">"sum_other_doc_count"</span><span class="token operator">:</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token property">"buckets"</span><span class="token operator">:</span><span class="token punctuation">[</span><span class="token punctuation">{</span><span class="token property">"key"</span><span class="token operator">:</span><span class="token string">"老汉"</span><span class="token punctuation">,</span><span class="token property">"doc_count"</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">"key"</span><span class="token operator">:</span><span class="token string">"老王"</span><span class="token punctuation">,</span><span class="token property">"doc_count"</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"><</span><span class="token class-name">Document</span><span class="token punctuation">></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"><</span><span class="token punctuation">></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">"老汉"</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"><</span><span class="token class-name">Document</span><span class="token punctuation">></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"><</span><span class="token punctuation">></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"><</span><span class="token class-name">Document</span><span class="token punctuation">></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"><</span><span class="token punctuation">></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">"老汉"</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"><</span><span class="token class-name">Document</span><span class="token punctuation">></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>
|