[英]Elastic search Nest C# - How to Ignore casing in Sorting in a generic way
[英]Generic Elastic Search Method c#
我正在使用Nest。
https://www.nuget.org/packages/NEST/6.1.0
我有以下代碼:
public class foo
{
public Guid id { get; set; }
}
public class foo2
{
public Guid id { get; set; }
}
public IReadOnlyCollection<T> GetDocumentAsync<T>(Guid id) where T: class
{
var searchResponse = _client.Search<T>(s => s
.Query(q => q
.Match(m => m
.Field(f => f.id) //f.id is not a property of T
.Query(id.ToString())
)
)
);
return searchResponse.Documents;
}
問題:如何將字段作為ID傳遞? 我知道我可以創建一個接口,但是我無法訪問這些類。 還有另一種映射方式嗎?
T
是泛型的,如果要使用特定屬性,則需要使用非泛型方法或添加為您提供Id
屬性的約束。 例如,具有這樣的接口:
public interface IHasId
{
Guid id { get; }
}
這使您的模型如下所示:
public class foo : IHasId
{
public Guid id { get; set; }
}
public class foo2 : IHasId
{
public Guid id { get; set; }
}
現在,您的方法將具有更新的約束:
public IReadOnlyCollection<T> GetDocumentAsync<T>(Guid id)
where T : class, IHasId // <--- Add this
{
// Snip
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.