0
我試圖使用elasticsearch facet script,但是當我到達reduce階段的NativeScriptFactory時,傳遞的映射參數是空的。 這裏是我的查詢:將參數傳遞給ElasticSearch構面腳本的本地reduce腳本
"facets": {
"myFacet": {
"script": {
"lang": "native",
"map_script": "MyMap",
"reduce_script": "MyReduce",
"params" : {
"facet" : {}
}
}
}
}
當我使用默認的減速機,我得到這樣的迴應:
"facets": {
"myFacet": {
"_type": "script",
"facet": [
{
"222790": 7,
"762984": 7
}
]
}
}
我的地圖腳本是這樣的:
public class MyMapScript extends AbstractSearchScript {
private Map<String, Double> _myScores;
public MyMapScript(Map<String, Object> stringObjectMap) {
_myScores = (Map<String, Double>) stringObjectMap.get("facet");
}
@Override
public Object run() {
ScriptDocValues.NumericLong tags = (ScriptDocValues.NumericLong) doc().get("tags");
for (Long t : tags.getValues()){
Double score = 7.0;
_myScores.put(t.toString(), score);
}
return _myScores;
}
}
和減少腳本廠,它以空白地圖作爲參數:
public class MyReduceScriptFactory implements NativeScriptFactory {
@Override
public ExecutableScript newScript(@Nullable Map<String, Object> stringObjectMap) {
return new MyReduceScript(stringObjectMap);
}
}
我需要做些什麼才能將映射器的輸出映射到reducer?