Invalid json while pushing search template to ElasticSearch

279 views Asked by At

I am developing a webapp, for which I am pushing my search templates to ES during startup and using them to form the elastic search queries at runtime. I have a requirement wherein, I don't know the number of filters to be applied. Created a search template like -

{
    "filters" : {
            {{#toJson}}
            clauses
            {{/toJson}}"            
        }
}

And search will be made like this -

GET _search/template

{
    "id": "template-id",
    "params": {
        "clauses": {
             "filters" : {
            { "match": { "user" : "foo" } },
            { "match": { "user" : "bar" } }
        }
   }
}

which will render result as -

{
    "filters":{
      "filters":{
          "match" : {
                "user" : "foo"
            }
          },
          {
            "match" : {
                "user" : "bar"
            }
          }
       }
   }

as suggested by ES documentation- https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html

But, since it's an invalid JSON, it doesn't allow me to push the template to ES.

My template works well when I use it as stored template in elastic-home/config/scripts. But I want to manage my templates with JAVA and push all templates during startup only. Can I get any help?

0

There are 0 answers