2016-04-07 13 views
0

Forex onay verisi bir dizin var ve örneğin bir başlangıç ​​ve bitiş tarihi içinde teklif fiyatları almak için bir sorgu oluşturmak istiyorum Belli bir "çözünürlük". Çözünürlükle kastettiğim, her x dakika veya saat için 1 değer, ortanca veya ortalama istediğimdir.Her x dakikada bir ortalama/ortalama değeri almak için aramaya ilişkin arama sorgusu/saatler/günler

Tahmin ediyorum, tarih histogram kümelenmesini istatistik birleştirme ile birlikte kullanmam gerekiyor - ama nasıl?

Bir numune değil doğru Şu anda üzerinde çalışıyorum sorgusu: Böyle

{ 
     "fields": ["ask_price", "bid_price", "tick_date"], 
     "query": { 
      "match": { 
       "currency_pair": currencyPair 
      } 
     }, 
     "filter": { 
      "range": { 
       "gte": startDate, 
       "lte": endDate, 
       "format": "yyyy-MM-dd" 
      } 
     }, 
     "aggs": { 
      "resolution": { 
       "date_histogram": { 
        "field": "tick_date", 
        "interval": "1m" 
       } 
      } 
     } 
} 

cevap

0

Ben Richa tepki @ dikkate alarak cevabımı çizin. Subaggregation kullanmam gerekiyor Bu yüzden son ve doğru sorgu şu şekilde olacaktır:

{ 
     "query": { 
      "match": { 
       "currency_pair": currencyPair 
      } 
     }, 
     "filter": { 
      "range": { 
       "tick_date": { 
        "gte": startDate, 
        "lte": endDate, 
        "format": "yyyy-MM-dd" 
       } 
      } 
     }, 
     "aggs": { 
      "resolution": { 
       "date_histogram": { 
        "field": "tick_date", 
        "interval": "15m" 
       }, 
       "aggs": { 
        "avg_bid": { 
         "avg": { 
          "field": "bid_price" 
         } 
        }, 
        "avg_ask": { 
         "avg": { 
          "field": "ask_price" 
         } 
        }, 
        "median_bid": { 
         "percentiles": { 
          "field": "bid_price", 
          "percents": [50] 
         } 
        }, 
        "median_ask": { 
         "percentiles": { 
          "field": "bid_ask", 
          "percents": [50] 
         } 
        } 
       } 
      } 
     } 
1

Kullanım subAggregation:

{ 
    "fields": ["ask_price", "bid_price", "tick_date"], 
    "query": { 
     "match": { 
      "currency_pair": currencyPair 
     } 
    }, 
    "filter": { 
     "range": { 
      "gte": startDate, 
      "lte": endDate, 
      "format": "yyyy-MM-dd" 
     } 
    }, 
    "aggs": { 
     "resolution": { 
      "date_histogram": { 
       "field": "tick_date", 
       "interval": "1m" 
      }, 

      "aggs": { 
      "statistics": { 
      "stats": { 
       "field": "field_name_whose_stats_are_to_be_found" 
       } 
       } 
      } 
      } 
     } 
    } 
İlgili konular