3
我在線閱讀了關於aws elacticsearch服務中腳本的信息。它表示AWS ES不支持動態腳本,因此我正在使用存儲在我的磁盤中的腳本編寫聚合。我寫了以下查詢AWS中的腳本elasticsearch
{
"query":{
"match_all":{}
},
"aggs":{
"inBoundRecieved":{
"scripted_metric":{
"init_script":{
"file": "init.groovy"
},
"map_script": {
"file": "map.groovy"
},
"combine_script": {
"file":"comb.groovy"
},
"params":{
"field":"call_direction"
},
"reduce_script": {
"file": "red.groovy"
}
}
}
}
}
但我不斷收到此錯誤。
Parse Failure [Unknown key for a START_OBJECT in [inBoundRecieved]: [init_script]
我在網上搜索了很多,但找不到一個好的解決方案。 完全錯誤 - >
{
"error" : "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[M-Sp4ZKmQCW0C4Ph2FIA1Q][plivoredshift][0]: RemoteTransportException[[Merlin][inet[/x.x.x.x:y]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[plivoredshift][0]: query[ConstantScore(*:*)], from[-1],size[-1]: Parse Failure [Failed to parse source [{ \"query\":{ \"match_all\":{} }, \"aggs\":{ \"inBoundRecieved\":{ \"scripted_metric\":{ \"init_script\":{ \"file\": \"init.groovy\" }, \"map_script\": { \"file\": \"map.groovy\" }, \"combine_script\": { \"file\":\"comb.groovy\" }, \"params\": { \"field\":\"call_direction\" }, \"reduce_script\": { \"file\": \"red.groovy\" } } } }}]]]; nested: SearchParseException[[plivoredshift][0]: query[ConstantScore(*:*)],from[-1],size[-1]: Parse Failure [Unknown key for a START_OBJECT in [inBoundRecieved]: [init_script].]]; }{[M-Sp4ZKmQCW0C4Ph2FIA1Q][plivoredshift][1]: RemoteTransportException[[Merlin][inet[/x.x.x.x:y]][indices:data/read/ search[phase/query]]]; nested: SearchParseException[[plivoredshift][1]: query[ConstantScore(*:*)],from[-1],size[-1]: Parse Failure [Failed to parse source [{ \"query\":{ \"match_all\":{} }, \"aggs\":{ \"inBoundRecieved\":{ \"scripted_metric\":{ \"init_script\":{ \"file\": \"init.groovy\" }, \"map_script\": { \"file\": \"map.groovy\" }, \"combine_script\": { \"file\":\"comb.groovy\" }, \"params\":{ \"field\": \"call_direction\" }, \"reduce_script\": { \"file\": \"red.groovy\" } } } }}]]]; nested: SearchParseException[[plivoredshift][1]: query[ConstantScore(*:*)],from[-1],size[-1]: Parse Failure [Unknown key for a START_OBJECT in [inBoundRecieved]: [init_script].]]; }{[M-Sp4ZKmQCW0C4Ph2FIA1Q][plivoredshift][2]: RemoteTransportException[[Merlin][inet[/x.x.x.x:y]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[plivoredshift][2]: query[ConstantScore(*:*)],from[-1],size[-1]: Parse Failure [Failed to parse source [{ \"query\":{ \"match_all\":{} }, \"aggs\":{ \"inBoundRecieved\":{ \"scripted_metric\":{ \"init_script\":{ \"file\": \"init. groovy\" }, \"map_script\": { \"file\": \"map.groovy\" }, \"combine_script\": { \"file\":\"comb.groovy\" }, \"params\":{ \"field\":\"call_direction\" }, \"reduce_script\": { \"file\": \"red.groovy\" } } } }}]]]; nested: SearchParseException[[plivoredshift][2]: query[ConstantScore(*:*)],from[-1],size[-1]: Parse Failure [Unknown key for a START_OBJECT in [inBoundRecieved]: [init_script]. ]]; }{[M-Sp4ZKmQCW0C4Ph2FIA1Q][plivoredshift][3]: RemoteTransportException[[Merlin][inet[/x.x.x.x:y]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[plivoredshift][3]: query[ConstantScore(*:*)],from[-1],size[-1]: Parse Failure [Failed to parse source [{ \"query\":{ \"match_all\":{} }, \"aggs\":{ \"inBoundRecieved\":{ \"scripted_metric\":{ \"init_script\":{ \"file\": \"init. groovy\" }, \"map_script\": { \"file\": \"map.groovy\" }, \"combine_script\": { \"file\":\"comb.groovy\" }, \"params\":{ \"field\":\"call_direction\" }, \"reduce_script\": { \"file\": \"red.groovy\" } } } }}]]]; nested: SearchParseException[[plivoredshift][3]: query[ConstantScore(*:*)],from[-1],size[-1]: Parse Failure [Unknown key for a START_OBJECT in [inBoundRecieved]: [init_script].
"status":400
}
這裏是我的腳本 init.groovy
_agg['transactions'] = []
map.groovy
if (doc['call_direction']=="inbound" {_agg.transactions.add(1)} else {_agg.transactions.add(0)}
comb.groovy
inBoundRecieved=0; for(t in _agg.transactions) {inBoundRecieved+=t}; return inBoundRecieved
red.groovy
inBoundRecieved=0; for(a in _aggs) {inBoundRecieved += a}; return inBoundRecieved
我一直在關注從ElacticSearch website
動態腳本在亞馬遜管理的ES服務中不可用,無論是內聯還是通過腳本文件。 [看到這個](http://kirankoduru.github.io/elasticsearch/moving-from-aws-elasticsearch-service.html) – Val
所以你的意思是說沒有辦法添加腳本到aws搜索查詢? – sidd607
這是正確的。就我的經驗而言,AWS管理的服務足以存儲日誌或一些非常簡單的ES使用情況,但如果您需要某些高級的ES功能,那麼最好是自行開發。 – Val