#elasticsearch #nest
#эластичный поиск #гнездо
Вопрос:
Я хочу построить запрос, эквивалентный следующему JSON
{ "function_score": { "script_score": { "script": "doc['some-field'].value" } } }
Однако, когда я использую следующий код
var q = new FunctionScoreQuery { Query = new ScriptScoreQuery { Script = new InlineScript($"doc['some-field'].value"), IsVerbatim = true, }, IsVerbatim = true };
Это становится
{ "function_score": { "query": { "script_score": { "script": "doc['some-field'].value" } } } }
который я отправляю в экземпляр ES, и он получает ошибку. Я проверил FunctionScoreQuery и не нашел, куда его положить ScriptScoreQuery
. Так могу ли я получить то, что хочу?
Ответ №1:
Я выясняю, что то, чего я хочу, эквивалентно
{ "function_score": { "functions": [ { "script_score": { "script": { "source": "doc['some-field'].value" } } } ] } }
Поэтому я использую
var q = new FunctionScoreQuery { Functions = new Listlt;IScoreFunctiongt; { new ScriptScoreFunction { Script = new InlineScript($"doc['some-field'].value"), } }, }
чтобы построить запрос и получить то, что я хочу.