2014-11-06 62 views
-1

這裏是我的樣本文檔:如何計算Elasticsearch中匹配文檔的字段?

{ 
    "jobID": "ace4c888-1907-4021-a808-4a816e99aa2e", 
    "startTime": 1415255164835, 
    "endTime": 1415255164898, 
    "moduleCode": "STARTING_MODULE" 
} 
  • 我有成千上萬的文件。
  • 我有一對文件相同的jobID和模塊代碼將是STARTING_MODULE和ENDING_MODULE。
  • 我的公式是ENDING_MODULE endTime減去STARTING_MODULE startTime等於模塊處理所花費的時間。

我的問題是:我怎麼總有小於假設28800000經過的時間所有的結果呢?

Elasticsearch有這樣的結果嗎?我想在Kibana中展示我的結果。

請讓我知道這是否需要更多的澄清。謝謝!

回答

0

請嘗試以下操作,可能並不理想,但會返回jobID和已用時間。首先我假設jobIDmoduleCodenot_analyzed

{ 
    "mappings": { 
    "jobs": { 
     "properties": { 
     "jobID":{ 
      "type": "string", 
      "index": "not_analyzed" 
     }, 
     "startTime":{ 
      "type": "date" 
     }, 
     "endTime":{ 
      "type": "date" 
     }, 
     "moduleCode":{ 
      "type": "string", 
      "index": "not_analyzed" 
     } 
     } 
    } 
    } 
} 

用於scripted_metric aggregation在ES 1.4.0可用於計算這兩個值之間的差異。還沒有研究如何添加過濾爲「低於2880萬」,但我希望可以有一些與該腳本進行限制這樣的:

{ 
    "query": { 
    "match_all": {} 
    }, 
    "aggs": { 
    "jobIds": { 
     "terms": { 
     "field": "jobID" 
     }, 
     "aggs": { 
     "executionTimes": { 
      "scripted_metric": { 
      "init_script": "_agg['time'] = 0L", 
      "map_script": "if (doc['moduleCode'].value == \"STARTING_MODULE\") { _agg['time']=-1*doc['startTime'].value } else { _agg['time']=doc['endTime'].value}", 
      "combine_script": "execution = 0; for (t in _agg.time) { execution += t };return execution", 
      "reduce_script": "execution = 0; for (a in _aggs) { execution += a }; return execution" 
      } 
     } 
     } 
    } 
    } 
} 

而且結果應該是這樣的:

"aggregations": { 
     "jobIds": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 0, 
     "buckets": [ 
      { 
       "key": "ace4c888-1907-4021-a808-4a816e99aa1e", 
       "doc_count": 2, 
       "executionTimes": { 
        "value": 1 
       } 
      }, 
      { 
       "key": "ace4c888-1907-4021-a808-4a816e99aa2e", 
       "doc_count": 2, 
       "executionTimes": { 
        "value": 1000201063 
       } 
      }, 
      { 
       "key": "ace4c888-1907-4021-a808-4a816e99aa3e", 
       "doc_count": 2, 
       "executionTimes": { 
        "value": 10000 
       } 
      } 
     ] 
     } 
    } 
相關問題