elasticsearch 嵌套支持 functionscore 函数中的过滤器

标签 elasticsearch nest

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

看起来 FunctionScoreFunctionsDescriptor 还不支持添加过滤器。是否会很快添加此功能?



这是我希望能够实现的 super 基本示例:

  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
}

我目前正在使用 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 嵌套支持 functionscore 函数中的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23484300/

相关文章:

c# - 跨多种类型的 ElasticSearch NEST 查询

c# - 如何使用 NEST 通过谓词删除所有文档

elasticsearch - Spring Data Elasticsearch 自动重连

elasticsearch - ES 6.x-带时区的直方图脚本

c# - 使用具有AND运算符的Nest ElasticSearch进行搜索查询

c# - Nest Elasticsearch 的文档术语频率

c# - 带有附加 TermAggregation 的 TermAggregation 在 AggregationDictionary 中不起作用

amazon-web-services - AWS ElasticSearch Client SDK

elasticsearch - ElasticSearch中所有文档的高效 “real time”检索

php - Elasticsearch ~2.0 php - 无法建立连接 - 数组到字符串转换错误