ElasticSearch API Parse Вложенная строка JSON Dashboard
Я использую ElasticSearch GET, чтобы получить файл json для dashbaord: например: http://es_ip:9200/kibana-int/dashboard/my_Dashboard/
Это возвращает мне файл JSON, как:
{"_index":"kibana-int","_type":"dashboard","_id":"my_Dashboard","_version":5,"found":true,"_source":{ "user":"guest", "group":"guest", "title":"my_Dashboard", "dashboard":"{ \"title\": \"My Dashboard\", \"services\": { \"query\": { \"list\": { \"0\": { \"id\": 0, \"type\": \"lucene\", \"query\": \"type:dh AND severity:ERROR AND (response.baseUrl:\"/rm/recordings/*\" OR request.baseUrl:\"/rm/recordings/*\")\", \"alias\": \"DH errors rcc\",.......
Здесь, где мне нужна ваша помощь, как я могу получить значение ключа "приборная панель", но без экранированного символа "\" в паре ключ / вал, не влияющего на экранированные, которые являются частью значений?
Вывод, который мне нужен, должен быть примерно таким:
{ "title": "My Dashboard", "services": { "query": { "list": { "0": { "id": 0, "type": "lucene", "query": "type:dh AND severity:ERROR AND (response.baseUrl:\"/rm/recordings/*\" OR request.baseUrl:\"/rm/recordings/*\")", "alias": "DH errors rcc",.......
Обратите внимание на ключ запроса, в его значении есть некоторые \ ", которые не должны затрагиваться, так как они являются частью значения.
Мне нужен этот вывод, чтобы затем проанализировать этот json с jq в каком-то скрипте bash, который у меня есть.
Есть ли в ElasticSearch api какой-нибудь фильтр, чтобы обеспечить этот вывод? Или вы знаете другой внешний метод, чтобы получить то, что мне нужно?
Большое спасибо за помощь.
1 ответ
fromjson твой друг. Например:
def data: {
"_index": "kibana-int",
"_type": "dashboard",
"_id": "my_Dashboard",
"_version": 5,
"found": true,
"_source": {
"user": "guest",
"group": "guest",
"title": "my_Dashboard",
"dashboard": "{ \"title\": \"My Dashboard\", \"services\": { \"query\": { \"list\": { \"0\": \"foobar\" }}}}"
}
};
data | ._source.dashboard | fromjson
Выход:
$ jq -n -f elastic.jq
{
"title": "My Dashboard",
"services": {
"query": {
"list": {
"0": "foobar"
}
}
}
}