elasticsearch,Mapreduce,elasticsearch" /> elasticsearch,Mapreduce,elasticsearch" />

Mapreduce 将参数传递给ElasticSearch方面脚本的本机reduce脚本

Mapreduce 将参数传递给ElasticSearch方面脚本的本机reduce脚本,mapreduce,elasticsearch,Mapreduce,elasticsearch,我正在尝试使用,但是当我到达reduce阶段的NativeScriptFactory时,传递的map参数为空。 我的问题是: "facets": { "myFacet": { "script": { "lang": "native", "map_script": "MyMap", "reduce_script": "MyReduce",

我正在尝试使用,但是当我到达reduce阶段的NativeScriptFactory时,传递的map参数为空。 我的问题是:

    "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;
    }
}
公共类MyMapScript扩展了AbstractSearchScript{
私有地图;
公共MyMapScript(映射stringObjectMap){
_myScores=(Map)stringObjectMap.get(“facet”);
}
@凌驾
公共对象运行(){
ScriptDocValues.NumericLong标记=(ScriptDocValues.NumericLong)doc().get(“标记”);
for(长t:tags.getValues()){
双倍得分=7.0;
_put(t.toString(),score);
}
返回(u);;
}
}
以及reduce脚本工厂,它获取一个空映射作为参数:

public class MyReduceScriptFactory implements NativeScriptFactory {
    @Override
    public ExecutableScript newScript(@Nullable Map<String, Object> stringObjectMap) {
        return new MyReduceScript(stringObjectMap);
    }
}
公共类MyReduceScriptFactory实现NativeScriptFactory{
@凌驾
公共可执行脚本newScript(@Nullable Map stringObjectMap){
返回新的MyReduceScript(stringObjectMap);
}
}

我要怎么做才能将映射器的输出输出到减速器?

显然这是固定的,我使用的是旧的