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が
- タイトルが割り当てられているが
が割り当てられている問題は、コンストラクタは、それがitemAbstract
として宣言しているので、Abstract
フィールドが割り当てられていないということです。これは、abstract
がC#の予約済みキーワードであるために行われています。コンストラクタのフィールド名を@abstract
に変更すると、これは機能しますが、予約されたキーワードを使用する必要があるため正しく表示されません。
Abstract
〜ItemAbstract
を変更すると、データベースのようなものがあり、さらに変更が必要になるため、オプションのようには見えません。
私はAbstract
フィールドをsearchRequest
からReport
コンストラクタにitemAbstract
に渡す方法を探しています。うまくいけばそれは理にかなっている。
私は清潔で意味がある他のソリューションには公開されています。
チャームのように働いた! –