【问题标题】:Constructing a FunctionScoreQuery using NEST QueryContainer使用 NEST QueryContainer 构造 FunctionScoreQuery
【发布时间】:2022-01-04 07:26:32
【问题描述】:

我想构造一个等价于以下 JSON 的查询

{
  "function_score": {
    "script_score": {
      "script": "doc['some-field'].value"
    }
  }
}

但是,当我使用以下代码时

var q = new FunctionScoreQuery
{
    Query = new ScriptScoreQuery
    {
        Script = new InlineScript($"doc['some-field'].value"),
        IsVerbatim = true,
    },
    IsVerbatim = true
};

得到

{
  "function_score": {
    "query": {
      "script_score": {
        "script": "doc['some-field'].value"
      }
    }
  }
}

我将它发布到一个 ES 实例并得到错误。 我检查了 FunctionScoreQuery 并发现无处放置 ScriptScoreQuery。那我能得到我想要的吗?

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    我发现我想要的等价于

    {
      "function_score": {
        "functions": [
          {
            "script_score": {
              "script": {
                "source": "doc['some-field'].value"
              }
            }
          }
        ]
      }
    }
    

    所以我用

    var q = new FunctionScoreQuery
    {
        Functions = new List<IScoreFunction>
        {
            new ScriptScoreFunction
            {
                Script = new InlineScript($"doc['some-field'].value"),
            }
        },
    }
    

    构造查询并得到我想要的。

    【讨论】:

      猜你喜欢
      • 2017-11-02
      • 2019-03-22
      • 1970-01-01
      • 2018-11-12
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-24
      相关资源
      最近更新 更多