0
Я нахожу функцию в ElasticSearch каккак писать elasticsearch script_score в Java API
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
для того чтобы достигнуть «Место caluse» и «цена caluse», но я не знаю, как написать"script_score"
и"script"
по Java API - версия ES в моем проекте 2.2.0 и я использую Java API для достижения этой функции
- Но я не могу найти API, как
ScriptScoreFunctionBuilder. scriptFunction(String script, Map<String, Object> params)
, как я могу сделать? Thx :) - Наконец я понять, как писать его с помощью JD-Жуй, чтобы проверить файл «elasticsearch.jar».
EX:
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);
что все
Пожалуйста, добавьте некоторые подробности о том, почему этот ответ. – Jayan
Большое вам спасибо за помощь, но 'new ScriptScoreFunctionBuilder()' не работает в моем проекте. API должен быть 'new ScriptScoreFunctionBuilder (Script)', он не может быть написан как ваш, только может писать как 'new ScriptScoreFunctionBuilder (скрипт) .toXContent (builder, params)' Я использую неправильный API? Мой английский плохой, извините :( – kevin
Я не могу понять Почему не работает новый ScriptScoreFunctionBuilder()? Нет другого конструктора. Кроме того, вы всегда можете создать новый ScriptScoreFunctionBuilder(). Scrip (SCRIPT) .toXContent (builder, params) – Rahul