【发布时间】:2023-04-03 16:11:01
【问题描述】:
我在 NEST 客户端中遇到源过滤问题。
这是我的代码示例:
var searchRequest = client.Search<Report>(analysisDescriptor
.Source(s => s
.Includes(i => i
.Fields(
f => f.ReportId,
f => f.Abstract,
f => f.Title
)
)
)
.Size(10));
其中analysisDescriptor 是new SearchDescriptor<Report>(),带有用于文本搜索的业务逻辑。
这是我的带有构造函数的类:
public class Report
{
public Report(int reportId, string itemAbstract, string title)
{
Abstract = itemAbstract;
ReportId = reportId;
Title = title;
/* Other fields */
}
public int ReportId { get; }
public string Abstract { get; }
public string Title { get; }
/* Other fields */
}
现在的问题是技术主管不想拥有set 属性,而是希望拥有一个构造函数。
上面的代码几乎可以工作:
- ReportId 已分配
- 标题已分配
问题是Abstract 字段未分配,因为构造函数已将其声明为itemAbstract。这样做是因为abstract 是 C# 中的保留关键字。如果我将构造函数中的字段名称更改为 @abstract - 这可行,但似乎不正确,因为我必须使用保留关键字。
将Abstract 更改为ItemAbstract 似乎不是一个选项,因为我们在数据库中拥有类似的选项,并且需要进行更多更改。
因此,理想情况下,我正在寻找一种将Abstract 字段从我的searchRequest 传递到Report 构造函数的方法,即itemAbstract。希望这是有道理的。
我愿意接受任何其他干净且有意义的解决方案。
【问题讨论】:
标签: c# elasticsearch nest elasticsearch-net