конечно, вот строка с запросом:
curl -XGET 'http://localhost:9200/_search' -d '{"from":0,"size":2,"query":{"query_string":{"fields":["message"],"query":""Severity=ERROR"","analyze_wildcard":false}},"filter":{"range":{"@timestamp":{"gt":"now-1006m"}}},"sort":[{"@timestamp":{"order":"desc"}}]}'
Вот запрос в удобной форме:
{
"from": 0,
"size": 2,
"query": {
"query_string": {
"fields": [
"message"
],
"query": ""Severity=ERROR"",
"analyze_wildcard": false
}
},
"filter": {
"range": {
"@timestamp": {
"gt": "now-1006m"
}
}
},
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
]
Получаю следующий результат:
{
"took": 183,
"timed_out": false,
"_shards": {
"total": 521,
"successful": 520,
"failed": 1,
"failures": [
{
"shard": 0,
"index": ".kibana",
"node": "pLSXJYh3SjWaZ7NUq4XDyw",
"reason": {
"type": "search_parse_exception",
"reason": "No mapping found for [@timestamp] in order to sort on"
}
}
]
},
"hits": {
"total": 12,
"max_score": null,
"hits": [
{
"_index": "logstash-2016.08.17",
"_type": "logs",
"_id": "AVaayHJrcYiAf5cDvm06",
"_score": null,
"_source": {
"message": "Aug 17 23:14:02 host - Severity=ERROR, bla bla bla bla",
"@version": "1",
"@timestamp": "2016-08-17T23:14:02.693Z",
"path": "/data/syslog/systemlog.log",
"host": "host-nagios"
},
"sort": [
1471475642693
]
},
{
"_index": "logstash-2016.08.17",
"_type": "logs",
"_id": "AVaayHJrcYiAf5cDvm0t",
"_score": null,
"_source": {
"message": "Aug 17 23:14:02 host - Severity=ERROR, bla bla bla bla",
"@version": "1",
"@timestamp": "2016-08-17T23:14:02.692Z",
"path": "/data/syslog/systemlog.log",
"host": "host-nagios"
},
"sort": [
1471475642692
]
}
]
}
}
Из всего этого результата мне необходимо только содержимое поля "message". Я на основании его создаю письмо и отправляю нужным адресатам.
Могу ли я его отпарсить уже на уровне DSL-запроса (средствами эластика), либо это уже пост обработка (запрос curl -XGET 'query' | cut,awk ...) ?