java - 如何在spring boot中使用弹性搜索模板id(存储在ES集群中)获取结果
问题描述
我在我的 ES 中存储了一个弹性搜索模板,我们想通过传递所需的参数在 spring boot rest 高客户端弹性搜索中使用这个模板 ID
curl -X POST \
http://localhost:9200/_scripts/my_template_id \
-H 'content-type: application/json' \
-d '{
"script": {
"lang": "mustache",
"source": {
"query": {
"bool": {
"should": [
{
"match": {
"studentName": {
"query": "{{query_string}}",
"operator": "or",
"fuzziness": 0,
"boost": 9
}
}
},
{
"match": {
"studentId": {
"query": "{{query_string}}",
"operator": "or",
"fuzziness": 0,
"boost": 1
}
}
}
]
}
},
"from": "{{from_offset}}",
"size": "{{result_size}}"
}
}
}'
我已经尝试了多种方法来使用上面的模板 id 并获取 SearchResponse 来制作 QuerySourceBuilder 但我失败了,有什么建议为什么它失败或 spring boot 不支持这样的功能?
解决方案
Spring Data Elasticsearch (4.3) 的下一个版本将支持使用搜索模板进行搜索,使用NativeSearchQueryBuilder
which then 将有一个方法withSearchTemplate(SearchTemplateRequestBuilder searchTemplateBuilder)
。
编辑 02.08.2021:
更深入地了解当前可用的内容后,我注意到将其放在上面NativeSearchQuery
是错误的。我们将需要更改它以向ElasticseachOperations
和 实现添加相应的方法。
因此,在 4.3 中会有一个解决方案,我将使用 sson 的详细信息更新此答案,因为它已实现。
编辑 29.10.2021:
不会在 4.3 中,我没有能力在 4.3 发布之前实现它,所以它会被推迟。
推荐阅读
- c# - Error in Routing in ASP.NET MVC
- android - androidx android.support.v4.app.INotificationSideChannel$Stub
- html - Bootstrap 导航栏汉堡按钮不起作用
- tensorflow - 即使我将 VPC 网络配置为侦听端口 8081,我也无法初始化 Google Cloud Platform 数据实验室
- redirect - Joomla!重定向过多
- mysql - 在 XAMPP MySQL 数据库未启动
- php - 在同一页面上显示条纹模式,而不是在“https://checkout.stripe.com/v3/...”中显示模式
- telegram - 在 Telegram 中自动化 setcommands
- c# - 文本框数据绑定到另一个类的属性
- string - 将 SMS 分成 30 个字符大小的 SMS