我一直在使用SearchTemplateRequest类来执行我的请求,它使用 Mustache 模板来解析带有传递参数的模板字符串。
Elasticsearch 模板 - 将参数转换为 JSON
但是,我必须更改我将切换到 Java 低级客户端的实现。我想使用 SearchTemplateRequest 在内部使用的 Mustache 实现来解析模板。我可以使用 Mustache 依赖项或使用它的 Elasticsearch 实现。有人可以帮我吗?
我的模板字符串:
{
"query": {
"bool": {
"filter": "{{#toJson}}clauses{{/toJson}}"
}
}
}
我的参数对象:
{
"clauses": [
{
"term": {
"field1": "field1Value"
}
}
]
}
我的测试代码:
StringWriter writer = new StringWriter();
MustacheFactory mustacheFactory = new DefaultMustacheFactory();
mustacheFactory.compile(new StringReader(requestTemplate), "templateName").execute(writer, params);
writer.flush();
上面的代码向我返回了请求模板字符串,其中空字符串替换了模板。
返回响应:
{
"query": {
"bool": {
"filter": ""
}
}
}
预期反应:
{
"query": {
"bool": {
"filter": [
{
"term": {
"field1": "field1Value"
}
}
]
}
}
}