java - 如何通过Java代码创建或更新elasticsearch的搜索模板
问题描述
我正在使用POST /_search/template/search
通过 Postman创建的以下弹性搜索查询
{
"template": {
"query": {
"bool": {
"should": [
{
"nested": {
"path": "paymentAccounts",
"query": {
"bool": {
"should": [
{
"nested": {
"path": "accounts",
"query": {
"bool": {
"should": [
{
"wildcard": {
"accounts.person.email.keyword": "*{{smartsearchquerystring}}*"
}
},
{
"wildcard": {
"accounts.description.keyword": "*{{smartsearchquerystring}}*"
}
},
{
"wildcard": {
"accounts.tradeName.keyword": "*{{smartsearchquerystring}}*"
}
},
{
"wildcard": {
"accounts.referenceId.keyword": "*{{smartsearchquerystring}}*"
}
}
]
}
}
}
}
]
}
}
}
}
]
}
},
"from" : "{{offset}}",
"size" : "{{limit}}"
}
}
现在,每次如果我想更新搜索模板,我都会通过 Postman 访问相同的端点。我想在我的服务中创建一个方法,例如每当我想更新任何模板只为该方法提供参数并创建或更新模板时。
我怎样才能使用 Java 做到这一点?或有关此的任何建议。
解决方案
您必须在某处将模板保存为 JSON 并向 ES 发送 PUT 请求,并且您的 Endpoint 应该如下所示,而不是您用来搜索的那个:/_template/{{template name or alias}}
您可以使用 OkHttpClient 发送您的请求更多详细信息检查如下: OKhttp PUT 示例
推荐阅读
- c# - 无法将 SQL Server LocalDB 用于我的 WPF 应用程序
- c++ - CMake:CMake 构建类型 (DCMAKE_BUILD_TYPE) 有什么作用?
- azure - 访问远程部署在 azure VM 中的 Neo4j Enterprise
- python - NoReverseMatch 在 /plat/salade-nicoise/
- r - 执行 rbf 方法时 RStudio 崩溃
- php - Azure 中的 Wincache 日志
- node.js - TypeScript 错误:TS2305:模块 '"./secretManager/secret"' 没有导出的成员
- javascript - 我们如何将数组中的嵌套对象转换为数组?
- jquery - 切片在jquery中的循环函数内不起作用
- c - 这个递归函数会产生什么?