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

+3

動態腳本在亞馬遜管理的ES服務中不可用,無論是內聯還是通過腳本文件。 [看到這個](http://kirankoduru.github.io/elasticsearch/moving-from-aws-elasticsearch-service.html) – Val

+0

所以你的意思是說沒有辦法添加腳本到aws搜索查詢? – sidd607

+0

這是正確的。就我的經驗而言,AWS管理的服務足以存儲日誌或一些非常簡單的ES使用情況,但如果您需要某些高級的ES功能,那麼最好是自行開發。 – Val

回答