【发布时间】:2020-04-16 00:31:53
【问题描述】:
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);
}
为简单起见,请期待以下内容:
- 模板将在应用程序生命周期之外生成/维护
- 我愿意不厌其烦地编写此代码一次,以使其适用于所有模板查询
最好在框架的扩展钩子中巧妙地实现这一点的最佳方法是什么?
【问题讨论】:
标签: elasticsearch spring-data spring-data-elasticsearch