您可通过查询模板将常用的查询逻辑进行固化,实现“一次定义,多次复用”。通过查询模板,应用开发者和数据分析人员无需频繁修改代码或学习复杂的DSL(Domain Specific Language)语句,只需传入参数即可执行查询操作,显著提升开发效率与系统安全性。
功能优势
易用性:支持快速生成及复用查询逻辑,避免代码冗余,降低维护成本。
安全性:仅允许执行预定义模板,降低查询注入风险,保障系统稳定。
便捷性:支持自动生成模板,可一键复制到Kibana进行测试。
使用场景
应用开发者:固化常见查询模式(例如,将电商搜索中的
“类别 + 品牌 + 价格区间”固化为可复用的模板),调用模板时只需传入参数,无需重复编写DSL或修改服务代码。新手用户:无需掌握复杂的DSL语法,可通过系统自动生成模板,快速上手、轻松构建有效查询。
使用限制
ES Serverless后续将对Mustache脚本类型全部开放,目前输入的脚本需要符合Serverless的Query白名单限制。
说明Mustache是一个无逻辑的模板引擎,支持多种编程语言(例如,Python、Java、JavaScript等)。它通过变量替换和条件/循环结构生成动态文本,常用于HTML、配置文件、API响应等场景。
单个应用内创建的查询模板(即Mustache脚本)最多不超过
10个。您可通过申请调整mustache_script_quota配额项的大小,获取更多模板数量。Mustache脚本最大长度不超过
10240个字符,且脚本中不支持再嵌入其他脚本。
如有特殊需求(例如,更改脚本限制),请提交工单联系技术支持人员处理。
进入查询模板
进入应用详情页。
登录Elasticsearch Serverless控制台,在顶部菜单栏切换至目标地域。
在左侧导航栏单击应用管理,单击已创建的应用名称,进入应用详情页。
在左侧导航栏的页签,您可按需新建模板、查看及使用模板,并执行相关模板管理操作。
说明本文示例的所有代码,均可进入Kibana界面执行。
新建模板
在查询模板页签单击创建模板,即可按需选择手动创建或智能生成模板。
手动创建
通过控制台界面创建
在创建查询模板对话框,选择手动创建,输入模板名称及模板内容,按照界面指引创建。模板名称必须在当前应用内唯一,后续可通过此名称来引用该模板。

模板内容示例如下。
{ "query": { "match": { "{{my_field}}": "{{my_value}}" } } }{my_field}:要搜索的字段名称。{my_value}:要搜索的关键词。
通过REST API创建
创建模板的示例代码如下。
PUT _scripts/{id} { "script": { "lang": "mustache", "source": { // 在其中编辑脚本 以下为例子 "query": { "match": { "message": "{{query_string}}" } }, "from": "{{from}}", "size": "{{size}}" } } }{id}:模板的名称。后续可通过该名称来引用当前模板。模板名称必须在当前应用内唯一。{query_string}:自定义的搜索内容。
自动创建
在对话框,选择需要查询的索引,系统会根据索引结构,使用内置大语言模型(LLM)模块自动推断并生成查询模板。
使用前须先创建索引,并且不同索引结构生成的查询模板存在差异,具体请以实际界面为准。

示例生成的查询模板代码如下,用于在文档索引中进行全文检索,支持基于文本的相关性搜索,适用于标题和描述内容的模糊匹配场景。
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "{{query_text}}",
"fields": [
"title^1.5",
"description"
],
"type": "best_fields",
"operator": "or"
}
}
],
"filter": [
{
"match_all": {}
}{{#id_filter}},
{
"term": {
"id": "{{id_filter}}"
}
}{{/id_filter}}
]
}
},
"highlight": {
"fields": {
"title": {},
"description": {}
}
},
"from": "{{from}}{{^from}}0{{/from}}",
"size": "{{size}}{{^size}}10{{/size}}"
}查看及使用模板
模板创建完成后,可通过如下方式查看。
通过控制台查看
在查询模板页面,可查看已创建的模板列表。单击目标模板操作列的编辑,即可查看模板详情。

通过REST API查看
示例代码如下,
{id}为您创建的模板名称。GET _scripts/{id}
通过REST API调用模板,在指定索引中执行相关查询操作。示例代码如下。
GET {your_index}/_search/template { "id": "{id}", "params": { "from": "{{from}}", "size": "{{size}}", "query_string": "{{query_string}}" } }{your_index}:所要查询的索引名称。{id}:所要使用的查询模板名称。params:传给模板的参数列表。{from}:分页起始位置。{size}:每页返回的结果数量。{query_string}:您输入的搜索关键词。例如 ,手机。
管理模板
在查询模板页面,可按需执行模板的编辑、复制、删除等操作。
编辑模板:
通过控制台编辑:单击目标模板操作列的编辑,可按需编辑查询模板的内容及说明信息。
通过REST API编辑:可使用如下代码重新写入模板,
{id}为需要编辑的模板名称。PUT _scripts/{id} { "script": { "lang": "mustache", "source": { // 编辑新模板 } } }
复制模板:单击目标模板操作列的复制模板,可复制模板内容。您可进入Kibana进行测试、使用。
删除模板:
重要删除操作不可逆,请谨慎执行。
通过控制台删除:单击目标模板操作列的删除,可按照界面指引删除该模板。
通过REST API删除:执行如下代码,删除目标模板。
{id}为所要删除的模板名称。DELETE _scripts/{id}