Я создаю запрос в гнезде
var searchResult = ( (ElasticClient)_Db ).Search<PackageRecord, PackageRecordSearchHit> ( s => s
.Index ( Db_deals_IndexName )
.Type ( Db_Package_TypeName )
.From ( request.Page * _DefaultPageSize )
.Size ( _DefaultPageSize )
.Query ( q => q
.QueryString ( qs =>qs
.OnFields ( f =>f.TenantId )
.Query ( user.Tenant.Id.ToString () ) )
&&
q.Nested ( n => n
.Path ( f => f.List_BorrowerSet[ 0 ] )
.Query ( qm => qm.QueryString ( qs => qs
.OnFields (
f => f.List_BorrowerSet.First ().PrimaryBorrower.ContactDetails.Name_First,
f => f.List_BorrowerSet.First ().PrimaryBorrower.ContactDetails.Name_Last
)
.Query ( request.SearchValue ) )
&& qm
.Term (
f => f.List_BorrowerSet.First ().IsPrimary, true )
) )
||
q.QueryString ( qs =>
qs.OnFields ( f =>
f.Collateral.SubjectProperty.Address.AddressLineText )
.Query ( request.SearchValue ) )
||
q.QueryString ( qs =>
qs.OnFields ( f =>
f.DisplayName )
.Query ( request.SearchValue ) )
)
.Fields (
f => f.Id,
f => f.DisplayName,
f => f.List_BorrowerSet[ 0 ].IsPrimary,
f => f.List_BorrowerSet[ 0 ].PrimaryBorrower.ContactDetails.Name_First,
f => f.List_BorrowerSet[ 0 ].PrimaryBorrower.ContactDetails.Name_Last,
f => f.Collateral.SubjectProperty.Address.AddressLineText
)
.SortAscending ( f => f.List_BorrowerSet.First ().PrimaryBorrower.ContactDetails.Name_Last )
.SortAscending ( f => f.List_BorrowerSet.First ().PrimaryBorrower.ContactDetails.Name_First )
);
Это возвращает 6 обращений, но без документов. Я просмотрел результаты попадания, но не могу понять, как справиться с отсутствующим полем /null при использовании
foreach ( var hit in searchResult.Hit)
{
response.Hits.Add ( new PackageSearchResultItem ()
{
// Id = hit.Fields.FieldValues<List<Guid>> ( "id" ).FirstOrDefault(),
// DisplayName = hit.Fields.FieldValues<string[]> ( "displayName" ).FirstOrDefault(),
// BorrowerFirstName = hit.Fields.FieldValues<string[]> ( "list_BorrowerSet.primaryBorrower.contactDetails.name_First" ).FirstOrDefault (),
// BorrowerLastName = hit.Fields.FieldValues<string[]> ( "list_BorrowerSet.primaryBorrower.contactDetails.name_Last" ).FirstOrDefault (),
// PropertyAddress = hit.Fields.FieldValues<string[]> ( "collateral.subjectProperty.address.AddressLineText" ).FirstOrDefault ()
} );
}
Как правильно сопоставить результаты поиска с PackageRecordSearchHit
объектами?