2015-10-03 2 views
2

Я использую плагин Head для ELASTICSEARCH для запуска запросов. Я хочу преобразовать в таблицу вывод запроса.Как преобразовать выход Elicsearch json в таблицу?

Та часть, что мне нужно только «хиты» массив объектов где столбцы являются полями, которые я указал в запросе: «http.date», «src_shift», «@ метки времени», "src_tz ».

Есть ли какой-нибудь инструмент или плагин для этого?

ниже краткого вывода запроса:

"took": 2418, 
"timed_out": false, 
"_shards": { 
    "total": 3503, 
    "successful": 3503, 
    "failed": 0 
}, 
"hits": { 
    "total": 2524,"max_score": 9.194927,"hits": [ 
     { 
      "_index": "$002555","_type": "pcap","_id": "AVAJJphp2MeWtoWCbQYG","_score": 9.194927,"fields": { 
       "src_shift": [ 
        1],"http.date": [ 
        "Fri, 12 Jun 2015 22:40:54 GMT"],"@timestamp": [ 
        1434147980397],"src_tz": [ 
        "Europe/Warsaw"]}},{ 
      "_index": "$002555","_type": "pcap","_id": "AVAJJphp2MeWtoWCbQYH","_score": 9.194927,"fields": { 
       "src_shift": [ 
        1],"http.date": [ 
        "Fri, 12 Jun 2015 22:40:54 GMT"],"@timestamp": [ 
        1434147980397],"src_tz": [ 
        "Europe/Warsaw"]}},... 

ответ

3

В головном плагином, на ваш любой вкладке Запрос, вы можете использовать раздел Результат Transformer, расположенный чуть ниже в разделе Запрос. По умолчанию он возвращает весь ответ JSON.

Result Transformer section

Вы можете изменить, что и массировать ответ вернуть все, что вы хотите. В вашем случае, если заменить по умолчанию return root; в коде ниже, вы получите то, что вы хотите:

return root.hits.hits.map(function(hit) { 
    var values = []; 
    for (var field in hit.fields) { 
     values.push(hit.fields[field]); 
    } 
    return values.join(","); 
}); 

Выход должен быть

1,"Fri, 12 Jun 2015 22:40:54 GMT",1434147980397,"Europe/Warsaw" 
1,"Fri, 12 Jun 2015 22:40:54 GMT",1434147980397,"Europe/Warsaw" 
... 
+0

это здорово, спасибо! есть ли у вас также советы по управлению результатами в ковше? – CDominik

+0

Вы имеете в виду агрегирующие ведра? Что ты хочешь делать? – Val

+0

да, если ответ - результат агрегирования, у меня нет полей, кроме коллекции ведра, поэтому я бы перечислил ключ и doc_count. – CDominik

1

Там есть утилита в Kibana называется tabify, что новообращенные Результаты ElasticSearch в табличной форме. Вы можете найти его реализацию здесь: https://github.com/elastic/kibana/blob/master/src/ui/public/agg_response/tabify/tabify.js

+0

ОК спасибо большое – CDominik

+0

Кстати, я недавно выпустил автономную реализацию функции tabify https://github.com/datavis-tech/es-tabify – curran

Смежные вопросы