gpt4 book ai didi

elasticsearch - 更像这个查询没有被序列化 - NEST

转载 作者:行者123 更新时间:2023-12-02 23:15:37 24 4
gpt4 key购买 nike

我正在尝试使用 NEST 的对象初始化器语法创建一个 Elasticsearch MLT 查询。但是,序列化时的最终查询仅缺少其中的 MLT 部分。但是,所有其他查询都存在。

检查查询对象时,存在 MLT。它只是没有被序列化。

我想知道我可能做错了什么。

我还注意到,当我添加字段时它可以工作。但我不认为 fields 是这里的强制属性,如果未设置,则忽略 MLT 查询。

MLT 查询是这样初始化的;

new MoreLikeThisQuery
{
Like = new[]
{
new Like(new MLTDocProvider
{
Id = parameters.Id
}),
}
}
MLTDocProvider实现 ILikeDocument界面。

我希望序列化查询包含 MLT 部分,但它是唯一缺少的部分。

最佳答案

这看起来更像是 NEST 中这个查询的无条件行为中的一个错误;我有 opened an issue to address .同时,您可以通过标记MoreLikeThisQuery 来获得所需的行为。逐字逐句,这将覆盖 NEST 的无条件行为

var client = new ElasticClient();

var parameters = new
{
Id = 1
};


var searchRequest = new SearchRequest<Document>
{
Query = new MoreLikeThisQuery
{
Like = new[]
{
new Like(new MLTDocProvider
{
Id = parameters.Id
}),
},
IsVerbatim = true
}
};

var searchResponse = client.Search<Document>(searchRequest);

序列化为
{
"query": {
"more_like_this": {
"like": [
{
"_id": 1
}
]
}
}
}

关于elasticsearch - 更像这个查询没有被序列化 - NEST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55750953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com