Я использовал класс SearchTemplateRequest для выполнения своих запросов, который использует шаблон Mustache для анализа моей строки шаблона с переданными параметрами. Шаблон Elasticsearch - преобразование параметров в JSON Однако мне нужно изменить свою реализацию, где я перейду на низкоуровневого клиента Java. Я хочу использовать реализацию Mustache, которую SearchTemplateRequest использует для внутреннего анализа шаблона. Я могу использовать зависимость Mustache или ее реализацию Elasticsearch. Может ли кто-нибудь помочь мне здесь?
Моя строка шаблона:
{
"query": {
"bool": {
"filter": "{{#toJson}}clauses{{/toJson}}"
}
}
}
Мой объект Params:
{
"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"
}
}
]
}
}
}