我如何生成通用类型的索引。这是我将文档插入由定义的通用索引中的代码。我在 Tres emp 部分中遇到错误,说“Tres是一种类型,在给定上下文中无效”
public void InsertDocument<Tres>(ElasticClient es, Tres emp,IndexName name) where Tres: new()
{
es.Index<Tres>(**Tres emp**, x => x.Index(name).Type("logs"));
}
最佳答案
您必须为通用“Tres”类型定义一个引用。要按预期执行通用类型的功能,您应该创建一个基类,其他elasticsearch索引类也可以从该基类派生。因此,您可以通过这种方式传递自定义的Elasticsearch索引类。
首先,为Elasticsearch索引类创建基类。
public class EsIndicesBaseClass
{
}
我提供了一个示例Elasticsearch索引模型;
public class EsSampleIndexModel : EsIndicesBaseClass
{
public string SampleProperty{get;set;}
}
并将您的通用方法更改为
public void InsertDocument<Tres>(ElasticClient es, Tres emp,IndexName name) where Tres: EsIndicesBaseClass
{
es.Index<Tres>(emp, x => x.Index(name).Type("logs"));
}
用法;
var esSampleIndexData = new EsSampleIndexModel();
InsertDocument<EsSampleIndexModel>(es, esSampleIndexData , name);