Elasticsearch Nest field boost + fuzzy

Elasticsearch Nest field boost + fuzzy

我正在尝试 set-up 具有 .NET 连接可用性的 Elasticsearch 环境。我能够使用自定义的模糊距离进行基本查询,但我无法做的是在查询时进行字段提升。 我已经尝试了几个 tutorials/questions,例如 Elasticsearch Nest Boost query or Elastic Search using NEST Field Boosting,但 NEST 无法识别“.OnFieldsWithBoost”或“.OnFields”。

我能够通过弹性搜索的 HTTP API 进行一些字段提升:

POST /products/typeproduct/_search
{
  "query" : {
   "bool": {
      "should": [
        {
          "match": {
            "Title": {
              "query": "sometest",
              "boost": 10.0 
            }
          }
        },
        {
          "match": { 
            "Name": "sometest"
          }
        }
      ]
    }
  }
}

但我还是无法通过 NEST 语法匹配此查询,因为它不允许 "should".

中有多个 "match"es

我的最终目标是能够将某些字段(标题)提升到其他字段(名称)之上,并在匹配中添加一些模糊性。 任何帮助将不胜感激。

我的弹性搜索版本:2.2.0 我的 NEST 版本:2.0.2

这是流畅的查询:

var response = client.Search<Document>(search => search
    .Query(q => q.Bool(b => b
        .Should(
            s => s.Match(m => m.Query("sometest").Field(f => f.Title).Boost(1.1)),
            s => s.Match(m => m.Query("sometest").Field(f => f.Name).Fuzziness(Fuzziness.EditDistance(1)))
        ))));

它生成以下对 elasticsearch 的查询:

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": {
              "boost": 1.1,
              "query": "sometest"
            }
          }
        },
        {
          "match": {
            "name": {
              "query": "sometest",
              "fuzziness": 1
            }
          }
        }
      ]
    }
  }
}

希望这就是您要找的:)