elasticsearch函数中对过滤器的嵌套支持
我目前正在尝试在NEST中实现“ function_score”查询,其功能仅在过滤器匹配时才适用。
看起来FunctionScoreFunctionsDescriptor似乎还不支持添加过滤器。是否会在不久的将来添加此功能?
这是我想要实现的一个超基本示例:
- 使用基本分数运行ES查询
- 浏览功能列表,并向其添加过滤器匹配的第一个分数
"function_score": { "query": {...}, // base ES query
"functions": [
{
"filter": {...},
"script_score": {"script": "25"}
},
{
"filter": {...},
"script_score": {"script": "15"}
}
],
"score_mode": "first", // take the first script_score where the filter matches
"boost_mode": "sum" // and add this to the base ES query score
}
我目前正在使用Elasticsearch v1.1.0和NEST v1.0.0-beta1预发行版。
谢谢!
回答:
它已经实现:
_client.Search<ElasticsearchProject>(s => s.Query(q=>q
.FunctionScore(fs=>fs.Functions(
f=>f
.ScriptScore(ss=>ss.Script("25"))
.Filter(ff=>ff.Term(t=>t.Country, "A")),
f=> f
.ScriptScore(ss=>ss.Script("15"))
.Filter(ff=>ff.Term("a","b")))
.ScoreMode(FunctionScoreMode.first)
.BoostMode(FunctionBoostMode.sum))));
以上是 elasticsearch函数中对过滤器的嵌套支持 的全部内容, 来源链接: utcz.com/qa/399036.html