我正在开发一个 web 应用程序,为此我在启动期间将我的搜索模板推送到 ES,并在运行时使用它们来形成弹性搜索查询。我有一个要求,我不知道要应用的过滤器数量。创建了一个搜索模板,例如 -
{
"filters" : {
{{#toJson}}
clauses
{{/toJson}}"
}
}
搜索将像这样进行 -
获取_搜索/模板
{
"id": "template-id",
"params": {
"clauses": {
"filters" : {
{ "match": { "user" : "foo" } },
{ "match": { "user" : "bar" } }
}
}
}
这会将结果呈现为 -
{
"filters":{
"filters":{
"match" : {
"user" : "foo"
}
},
{
"match" : {
"user" : "bar"
}
}
}
}
正如 ES 文档所建议的那样 - https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html
但是,由于它是一个无效的 JSON,它不允许我将模板推送到 ES。
当我将模板用作 elastic-home/config/scripts 中的存储模板时,我的模板运行良好。但我想用 JAVA 管理我的模板,并且只在启动期间推送所有模板。我能得到任何帮助吗?