Hi everyone,
I'm trying to use an array from the watch metadata
in a terms
query for one of my watchers. I want to use a Mustache search template-style query as described here:
https://www.elastic.co/docs/solutions/search/search-templates#search-template-convert-json
Here's the Watch I'm trying to execute:
POST _watcher/watch/_execute
{
"watch": {
"metadata": {
"contact_group_names": [
"Unix-Apps Admin"
]
},
"input": {
"search": {
"request": {
"indices": [
"infra-on-call"
],
"body": {
"source": """
{
"query": {
"terms": {
"Group": {{#toJson}}{{ctx.metadata.contact_group_names}}{{/toJson}}
}
}
}
"""
}
}
}
},
"trigger": {
"schedule": {
"interval": "1h"
}
},
"condition": {
"always": {}
},
"actions": {
"log_results": {
"logging": {
"text": "Search returned {{ctx.payload.hits.total}} hits"
}
}
}
}
}
When I execute this, I get the following error:
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "Unknown key for a VALUE_STRING in [source].",
"line": 1,
"col": 11
}
],
"type": "parsing_exception",
"reason": "Unknown key for a VALUE_STRING in [source].",
"line": 1,
"col": 11
},
I suspect it's something to do with the way I'm trying to use source
and toJson
, but I'm not sure how to structure this correctly inside the Watcher's search
input.
Would be grateful for any help or guidance on what I'm doing wrong!
Thanks in advance.