You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在Hibernate中使用Mustache查询?如何通过Hibernate Search调用OpenSearch中的Mustache脚本?

Hibernate Search与OpenSearch Mustache脚本的使用问题解答

问题1:是否可以在Hibernate中编写Mustache查询或使用已有脚本?

Hibernate Search本身没有提供专门针对Mustache查询的高层API,但可以通过原生查询扩展实现需求。因为Hibernate Search底层对接的OpenSearch客户端本身支持Mustache模板语法,你可以直接编写符合OpenSearch规范的Mustache查询JSON,再通过Hibernate Search的原生查询入口执行。

问题2:能否通过Hibernate Search调用OpenSearch中已保存的Mustache脚本?

可以,具体步骤如下:

  1. 获取SearchSession实例,这是Hibernate Search的核心查询入口。
  2. 通过OpenSearchExtension.get()获取原生查询的扩展支持(如果是Elasticsearch环境则用ElasticsearchExtension)。
  3. 构建原生查询时,指定调用已保存脚本的JSON结构,包含脚本ID和所需参数。
  4. 执行查询并处理返回结果,逻辑和普通Hibernate Search查询一致。

代码示例

// 从EntityManager获取SearchSession
SearchSession searchSession = Search.session(entityManager);

// 调用OpenSearch中已保存的Mustache脚本
List<Product> products = searchSession.search(Product.class)
        .extension(OpenSearchExtension.get())
        .where(f -> f.fromJson("""
                {
                    "id": "product-search-template",
                    "params": {
                        "category": "electronics",
                        "minPrice": 100.0
                    }
                }
                """))
        .fetchHits(15);

注意事项

  • 确保Hibernate Search版本与你的OpenSearch集群版本兼容,避免因协议差异导致调用失败。
  • OpenSearch中已保存的Mustache脚本需提前正确注册,且客户端拥有足够的调用权限。
  • 原生查询的JSON结构必须严格遵循OpenSearch的Mustache脚本调用规范,参数名要与脚本中的变量完全匹配。

内容的提问来源于stack exchange,提问作者RiseOfDeath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:27:15