Elasticsearch 9.0 版本针对 ES|QL 里的 QSTR 函数做了重要升级,老版本 QSTR 只能传入 Lucene 查询字符串,匹配行为完全跟着内置默认规则走,没法单独调整查询参数;9.0 新增了可选的 options 命名参数,开发者可以在 ES|QL 语句里直接传入配置对象,自定义默认检索字段、默认布尔操作符、模糊匹配、权重等行为,不用再改索引全局配置或者嵌套复杂 DSL。QSTR 是 ES|QL 里用来直接跑 Lucene 查询语法的函数,在日志检索、安全检测、告警查询场景用得很多,之前受限默认规则,同一个查询串在不同索引、不同业务下表现很难统一,现在通过 options 把常用配置开放到 ES|QL 语法层,查询逻辑更可控,也方便写可复用的检索脚本。这个改动是官方 release notes 标记的正式 Feature,对应 issue 120933,和 match 函数的 options 扩展思路对齐,只作用于当前这条 QSTR 查询,不会影响其他查询。
QSTR options 支持的核心配置清单
- default_field:指定查询默认检索字段,替代全局默认字段
- default_operator:默认布尔算子,AND / OR,控制多词之间的逻辑
- allow_leading_wildcard:是否允许前置通配符,默认一般关闭,开启后语法更灵活但开销更高
- boost:给这条 QSTR 查询设置权重,用于多条件组合打分
- fuzziness:模糊匹配阈值,适合日志拼写、采集误差场景
- analyze_wildcard:是否对带通配符的词执行分词分析
新旧版本用法对比表
| 版本 | 写法形式 | 可控性 | 适用场景 | |
|---|---|---|---|---|
| 9.0 之前 | QSTR("error AND timeout") | 只能用集群 / 索引默认规则,参数不可调 | 简单固定检索,不区分业务规则 | |
| 9.0 及以后 | QSTR("error timeout", {default_operator:"AND", default_field:"message"}) | 单条查询独立配置,互不干扰 | 日志、安全检索,多业务一套 ES | QL 模板 |
使用注意事项
- options 是可选命名参数,不写 options 的时候,QSTR 行为和旧版本保持兼容,老脚本不用改动
- options 里面的参数和 Lucene Query String Query 的参数对齐,熟悉 DSL 的开发者上手成本很低
- 开启 allow_leading_wildcard、analyze_wildcard 会拉高查询 CPU 开销,高并发日志检索要谨慎开启
- 只在 ES|QL 语法生效,不影响 DSL 里的 query_string 查询本身
【相关 FAQ】
问题 1:ES|QL 的 QSTR 不再依赖默认规则,Elasticsearch9.0 新增 options 命名参数,QSTR 是什么?
回答 1:ES|QL 的 QSTR 就是 ES|QL 中用来直接执行 Lucene 查询字符串语法的函数,9.0 之前它行为完全由默认规则控制,9.0 新增 options 命名参数,支持单独配置这条查询的检索行为。
问题 2:ES|QL 的 QSTR 不再依赖默认规则,Elasticsearch9.0 新增 options 命名参数,老的 ES|QL QSTR 脚本会受影响吗?
回答 2:不会,ES|QL 的 QSTR 在 9.0 新增 options 命名参数属于可选扩展,不传入 options 时,QSTR 继续沿用原来默认逻辑,存量查询脚本可以直接运行,不用修改。
问题 3:ES|QL 的 QSTR 不再依赖默认规则,Elasticsearch9.0 新增 options 命名参数,options 可以配置哪些常用项?
回答 3:ES|QL QSTR 的 options 可以配置默认字段、默认 AND/OR 操作符、模糊度、查询权重、是否允许前置通配符、是否分析通配符词条等,用来脱离全局默认规则单独控制本次检索。
【参考资料】
[2026-10-26](ES|QL|QSTR 不再只靠默认规则,9.0 加了 options 命名参数)腾讯云开发者社区
[2025-04-15](Elasticsearch 9.0 Release Notes Added optional parameters to QSTR ES|QL function)Elastic 官方文档
[2025-04-10](ES|QL 全文检索函数最佳实践,QSTR、MATCH、KQL 区分)Elastic Search Labs
[2025-03-20](Issue 120933:ES|QL QSTR 支持传入 options 参数)Elastic Github
[2025-04-12](ES|QL match 函数 options 扩展说明,和 QSTR 设计对齐)Elastic 博客
【免责声明】
本文内容来自 Elastic 官方 release notes、社区技术文章整理,ES|QL QSTR 的 options 参数细节以对应版本官方文档为准;开启通配符、模糊类参数会带来查询性能损耗,上线前建议做压测,不构成生产环境强制配置方案。
本文来自作者[分波推演师]投稿,不代表乌兰科技网立场,如若转载,请注明出处:https://www.wlcbnews.com/rgzn/202611/470.html
评论列表(4条)
我是乌兰科技网的签约作者“分波推演师”!
希望本篇文章《ES|QL 的 QSTR 不再依赖默认规则,Elasticsearch9.0 新增 options 命名参数》能对你有所帮助!
本站[乌兰科技网]内容主要涵盖:互联网行业的追踪与探索
本文概览:Elasticsearch 9.0 版本针对 ES|QL 里的 QSTR 函数做了重要升级,老版本 QSTR 只能传入 Lucene 查询字符串,匹配行为完全跟着内置默认规则走,没法单独调整查询参数;9.0 新增了可选的 options 命名参数,开发者可以在 ES|QL 语句里直接传入配置对象,自定义默认检索字段、默认布尔操作符、模糊匹配、权重等行为,不用再改索引全局配置或者嵌套复杂 DSL。QSTR 是 ES|QL 里用来直接跑 Lucene 查询语法的函数,在日志检索、安全检测、告警查询场景用得很多,之前受限默认规则,同一个查询串在不同索引、不同业务下表现很难统一,现在通过 options 把常用配置开放到 ES|QL 语法层,查询逻辑更可控,也方便写可复用的检索脚本。这个改动是官方 release notes 标记的正式 Feature,对应 issue 120933,和 match 函数的 options 扩展思路对齐,只作用于当前这条 QSTR 查询,不会影响其他查询。