繁体   English   中英

如何在Java API中编写elasticsearch script_score

[英]how to write elasticsearch script_score in java api

我在ElasticSearch中找到了一个像

GET /_search
{
  "function_score": {
    "functions": [
      { ...location clause... }, 
      { ...price clause... }, 
      {
        "script_score": {
          "params": { 
            "threshold": 80,
            "discount": 0.1,
            "target": 10
          },
          "script": "price  = doc['price'].value; margin = doc['margin'].value;
          if (price < threshold) { return price * margin / target };
          return price * (1 - discount) * margin / target;" 
        }
      }
    ]
  }
}
  • 我使用ScoreFunctionBuilder来实现“位置计算”和“价格计算”,但是我不知道如何通过Java API编写"script_score""script"
  • 我项目中的ES版本是2.2.0,我使用java api实现此功能
  • 但是我找不到像ScriptScoreFunctionBuilder. scriptFunction(String script, Map<String, Object> params)这样的API ScriptScoreFunctionBuilder. scriptFunction(String script, Map<String, Object> params) ScriptScoreFunctionBuilder. scriptFunction(String script, Map<String, Object> params)我该怎么办?Thx :)
  • 最后,我弄清楚了如何使用JD-JUI检查“ elasticsearch.jar”文件来编写它。

例如:

Map<String, Object> params = new HashMap<>();
    params.put("num1", 10);
    params.put("num2", 4);

    String inlineScript = "doc['score'].value * num1 * num2";

    Script script = new Script(script, ScriptType.INLINE, "groovy", params);

    ScriptScoreFunctionBuilder scriptBuilder = ScoreFunctionBuilders.scriptFunction(ss);

就这样

这是如何在Java中实现scrip_ score函数

Map<String, Object> params = new HashMap<>();                   
params.put("paramName1", "paramVal1")
params.put("paramName2", "paramVal2");

String script = "price  = doc['price'].value; margin = doc['margin'].value;
      if (price < threshold) { return price * margin / target };
      return price * (1 - discount) * margin / target;"
XContentBuilder builder = 
                    new ScriptScoreFunctionBuilder()
                    .script(script)
                    .lang("groovy")
                    .params(params)
                    .toXContent(XContentBuilder, params);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM