elasticsearch - Nest筛选功能分数

标签 elasticsearch nest

我正在尝试使用DSL语法构建以下查询:

    GET /_search
    {
      "query": {
        "function_score": {
          "filter": { 
            "term": { "city": "Barcelona" }
          },
          "functions": [ 
            {
              "filter": { "term": { "features": "wifi" }}, 
              "weight": 1
            },
            {
              "filter": { "term": { "features": "garden" }}, 
              "weight": 1
            },
            {
              "filter": { "term": { "features": "pool" }}, 
              "weight": 2 
            }
          ],
          "score_mode": "sum", 
        }
      }
    }

但是,使用NEST客户端时,在function_score中似乎没有filter选项。我可以确认查询是 flex 的。

最佳答案

我不确定要定位的是哪个版本的Elasticsearch,但是自Elasticsearch 2.0 when queries and filters were merged以来,filter查询上没有function_score属性。 NEST公开了Elasticsearch API中可用的功能,因此该属性在NEST 1.x中可用,但在任何更高版本中均不可用。

Filters on individual functions exist

var response = client.Search<object>(s => s
    .Query(q => q
        .FunctionScore(fs => fs
            .Functions(fu => fu
                .Weight(w => w
                    .Weight(1)
                    .Filter(wf => wf
                        .Term("features", "pool")
                    )
                )
            )
        )
    )
);

关于elasticsearch - Nest筛选功能分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45636690/

相关文章:

elasticsearch - 为标准分析仪启用停止 token 过滤器

csv - 在确定Elasticsearch(通过Logstash)提取的文档类型方面需要帮助

elasticsearch - 导入PDF的ElasticSearch NEST问题

c# - Elasticsearch搜索不区分大小写的字段的确切值

elasticsearch - Elasticsearch Analyzer的前4个字符和后4个字符

elasticsearch - Elasticsearch Index Management 是否允许使用点映射属性名称?

c# - 带有 Nest 和 Field Suffix 的 MultiMatch 查询

elasticsearch - 使用NEST(.net)在Elasticsearch中进行复杂搜索

elasticsearch - 如何使用低级.net Elasticsearch客户端处理群集节点的突然丢失?

elasticsearch - Elasticsearch多索引查询与地理边界框查询