elasticsearch嵌套支持功能中的过滤器

IBN*_*IBN 4 elasticsearch nest

我目前正在尝试在NEST中实现“ function_score”查询,仅在过滤器匹配时才应用这些函数。

看起来FunctionScoreFunctionsDescriptor尚不支持添加过滤器。是否会在不久的将来添加此功能?



这是我想要实现的超基本示例:

  1. 使用基本分数运行ES查询
  2. 浏览功能列表,并向其添加过滤器匹配的第一个分数
"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
}
Run Code Online (Sandbox Code Playgroud)

我目前正在使用Elasticsearch v1.1.0和NEST v1.0.0-beta1预发行版。

谢谢!

Udi*_*Udi 5

它已经实现:

_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))));
Run Code Online (Sandbox Code Playgroud)