У меня есть этот код в jinja2, который будет построен в упругих часах.
Код дзиндзя:
search:
request:
indices: "{{_watch_options.input_request.indices}}"
body:
_source: "{{_watch_options.input_request.source}}"
size: "{{_watch_options.input_request.size}}"
query:
bool:
must:
query_string:
analyze_wildcard: true
query: "{{_watch_options.input_request.query}}"
range:
'@timestamp':
"gte": "{{_watch_options.input_request.timestamp.gte}}"
"lte": "{{_watch_options.input_request.timestamp.lte}}"
"format": "epoch_millis"
Результат выглядит следующим образом:
"input": {
"search": {
"request": {
"search_type": "query_then_fetch",
"indices": [
"log-*"
],
"types": [],
"body": {
"query": {
"bool": {
"must": {
"query_string": {
"analyze_wildcard": true,
"query": "NodeNotConnectedException"
},
"range": {
"@timestamp": {
"gte": "1535364473991",
"lte": "1540548473992",
"format": "epoch_millis"
}
}
}
}
},
"size": "5",
"_source": "elasticsearch_log.message"
}
}
}
},
Но, к сожалению, query.bool.must должен быть установлен в массив, потому что иначеasticsearch не может выполнить query_string и добавить диапазон.
На самом деле запрос ввода, соответственно, параметр must должен выглядеть следующим образом. С квадратными скобками:
"must": [
{
"query_string": {
"analyze_wildcard": true,
"query": "NodeNotConnectedException"
}
},
{
"range": {
"@timestamp": {
"gte": 1535364473991,
"lte": 1540548473992,
"format": "epoch_millis"
}
}
}
]
Можете ли вы, ребята, дать совет, я могу объявить квадратные скобки в шаблоне jinja или заставить ANSIBLE использовать их в этом контексте?
Большое спасибо