2015-09-18 165 views
1

我正在使用ES,我需要一個查詢返回兩個datetime(mysql timediff)之間的差異,但還沒有找到ES的任何功能來做到這一點。有人可以幫助我嗎?如何計算ElasticSearch中兩個日期時間之間的差異

MySQL查詢

SELECT SEC_TO_TIME(
    AVG(
     TIME_TO_SEC(
     TIMEDIFF(r.acctstoptime,r.acctstarttime) 
    ) 
    ) 
) as average_access 

FROM radacct 

謝謝!

回答

4

你最好的選擇是腳本字段。如果您啓用了動態腳本,並且這些日期字段在映射中定義爲日期,則上述搜索查詢應該可以工作。

{ 
    "script_fields": { 
    "test1": { 
     "script": "doc['acctstoptime'].value - doc['acctstarttime'].value" 
    } 
    } 
} 

請注意,你會得到結果在時代,你需要轉換爲你的面額。

您可以在這裏閱讀約scripted field及其一些例子here

+0

It Work !!!!但是我必須在config/elasticsearch.yml上啓用動態腳本。查看更多[這裏](http://stackoverflow.com/questions/24711168/elasticsearch-dynamic-scripting-disabled)謝謝!!!!! – fuzeto

相關問題