是否可以使用嵌套在弹性搜索中定义通用索引?

时间:2017-11-24 06:08:41

标签: c# generics elasticsearch

如何生成泛型类型的索引。这是我将代码插入到由.I定义的泛型索引中的代码。我在 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")); 
    }

1 个答案:

答案 0 :(得分:0)

您必须为通用“Tres”类型定义引用。要按预期执行泛型类型的功能,您应该创建一个从其派生的其他elasticsearch索引类的基类。因此,您可以通过这种方式传递自定义弹性搜索索引类。

首先,为Elasticsearch索引类创建一个基类。

flex: 1

我提供了一个示例Elasticsearch索引模型;

public class EsIndicesBaseClass
{

}

将您的通用方法更改为

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")); 
    }