2015-07-03 4 views
1

Я хочу преобразовать следующий запрос kibbana elasticsearch для запроса в elasticsearch.count(index=indices, body=query).Получение запроса elasticsearch от Kibana

Цель, чтобы получить количество для данной метки времени (последние 24 часа), кластерный и integer_field> 0.

  • метка: дата типа
  • кластера: строка
  • integer_field: длинные (значения в основном большие целые числа)

запрос время (полученные из Kibana)

curl -XGET 'some-url:9200/logstash-2015.07.03,logstash-2015.07.02/_search?pretty' -d '{ 
    "facets": { 
    "0": { 
     "date_histogram": { 
     "field": "@timestamp", 
     "interval": "10m" 
     }, 
     "global": true, 
     "facet_filter": { 
     "fquery": { 
      "query": { 
      "filtered": { 
       "query": { 
       "query_string": { 
        "query": "*" 
       } 
       }, 
       "filter": { 
       "bool": { 
        "must": [ 
        { 
         "range": { 
         "@timestamp": { 
          "from": 1435840604940, 
          "to": 1435927004940 
         } 
         } 
        }, 
        { 
         "fquery": { 
         "query": { 
          "query_string": { 
          "query": "integer_field:(>0)" 
          } 
         }, 
         "_cache": true 
         } 
        }, 
        { 
         "fquery": { 
         "query": { 
          "query_string": { 
          "query": "cluster:(\"YYY\")" 
          } 
         }, 
         "_cache": true 
         } 
        } 
        ] 
       } 
       } 
      } 
      } 
     } 
     } 
    } 
    }, 
    "size": 0 
}' 

Я написал запросы для других случаев. Это только тот случай, когда я застреваю. Помощь будет действительно оценена.

ответ

1

Запрос, который вам нужен, проще, чем тот, который Kibana вынужден автогенерировать. Вообще говоря, вытягивая их из Kibana, вы хотите найти «фильтрованную» часть запроса. Оттуда вы можете удалить условия подстановки.

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool" : { 
      "must" : [ 
      { 
       "term" : { 
       "cluster" : "YYYY" 
       } 
      }, 
      { 
       "range" : { 
       "integer_field" : { 
        "gt" : 0 
       } 
       } 
      }, 
      { 
       "range" : { 
       "@timestamp" : { 
        "gt" : "now - 24h" 
       } 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

«Кластер» term фильтр является только один, который, возможно, не «действительным» для использования. term: Точный соответствует индексированным значениям, поэтому, если это не буквально «ГГГГ» (например, «yyyy»), то оно не будет соответствовать. Возможно, что вы хотите, чтобы { "term": { ... } } был:

+0

Большое спасибо. Это сработало! –

+0

Добро пожаловать. PS: Вы должны обновиться до Kibana 4. – pickypg

+0

Мы собираемся :) –

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