gpt4 book ai didi

elasticsearch - 如何集成 Spring Data Elasticsearch(存储库接口(interface))和模板查询?

转载 作者:行者123 更新时间:2023-12-03 02:33:15 26 4
gpt4 key购买 nike

Elasticsearch 有一个叫做 template query 的概念。 ,我们可以在 Elasticsearch 服务器上存储模板化查询。

这是我们如何使用单个参数 firstName 存储此类查询的示例:

POST _scripts/findByProfileFirstName
{
"script": {
"lang": "mustache",
"source": {
"query": {
"match": {
"esCandProfile.firstName": "{{firstName}}"
}
}
}
}
}

这可以使用以下示例调用:
GET candidates/_search/template
{
"id": "findByProfileFirstName",
"params": {
"firstName": "Shannon"
}
}

如何延长 Spring Data Elasticsearch 实现以下目标:
public interface CandidateRepository extends ElasticsearchRepository<Candidate, String> {

@Query("findByProfileFirstName")
Page<Candidate> findByCustomQuery(@Param("firstName") String firstName, Pageable pageable);
}

为简单起见,预期以下内容:
  • 模板将在应用程序生命周期之外生成/维护
  • 我愿意费心编写此代码一次,以使其适用于所有模板查询

  • 最好在框架的扩展钩子(Hook)中巧妙地实现这一点的最佳方法是什么?

    最佳答案

    为此,我们需要引入一个新的注释,如 @TemplateSearch因为@Query用于构建发送到 _search 端点的包装查询。在这里,我们需要使用不同的参数来处理 _search/template 端点。
    SearchOperations接口(interface)需要一个额外的方法,比如 searchByTemplate它调用 Elasticsearch,并且当使用新注释对存储库方法进行注释时,需要调整存储库逻辑以使用此新方法。

    请创建 issue for this improvement in Jira .

    关于elasticsearch - 如何集成 Spring Data Elasticsearch(存储库接口(interface))和模板查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59477001/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com