Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#嵌套弹性通用索引创建_C#_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Nest - Fatal编程技术网 elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

c#嵌套弹性通用索引创建

c#嵌套弹性通用索引创建,c#,elasticsearch,nest,C#,elasticsearch,Nest,我有一个通用的“创建”方法。此方法将按泛型类型创建索引 public void Create<T>(T node) { if (!_elasticClient.IndexExists(_indexName).Exists) { var indexSettings = new IndexSettings(); indexSettings.NumberOfReplicas = 1; indexSetting

我有一个通用的“创建”方法。此方法将按泛型类型创建索引

public void Create<T>(T node) 
{        
    if (!_elasticClient.IndexExists(_indexName).Exists)
    {
        var indexSettings = new IndexSettings();
        indexSettings.NumberOfReplicas = 1;
        indexSettings.NumberOfShards = 3;

        var createIndexDescriptor = new CreateIndexDescriptor(_indexName)
                .Mappings(ms => ms.Map<T>(m => m.AutoMap()))
                .InitializeUsing(new IndexState() { Settings = indexSettings })
                .Aliases(a => a.Alias(aliasName));

        var response = _elasticClient.CreateIndex(createIndexDescriptor);
    }

    _elasticClient.Index<T>(node, idx => idx.Index(_indexName));
}
公共void创建(T节点)
{        
如果(!\u elasticClient.indexists(\u indexName.Exists)
{
var indexSettings=新的indexSettings();
indexSettings.NumberOfReplicas=1;
indexSettings.NumberOfShards=3;
var createIndexDescriptor=新的createIndexDescriptor(_indexName)
.Mappings(ms=>ms.Map(m=>m.AutoMap())
.InitializeUsing(新IndexState(){Settings=indexSettings})
.别名(a=>a.别名(别名名称));
var response=\u elasticClient.CreateIndex(createIndexDescriptor);
}
_elasticClient.Index(节点,idx=>idx.Index(_indexName));
}
但我发现了一些错误:

  • 类型“T”必须是引用类型,才能将其用作泛型类型或方法中的参数“T” 'MappingsDescriptor.Map(Func)'

  • 类型“T”必须是引用类型,才能将其用作泛型类型或方法中的参数“T” 'ElasticClient.Index(T,Func)'


  • 尝试添加
    ,其中T:class

    public void Create<T>(T node) where T : class
        {        
            if (!_elasticClient.IndexExists(_indexName).Exists)
            {
                var indexSettings = new IndexSettings();
                indexSettings.NumberOfReplicas = 1;
                indexSettings.NumberOfShards = 3;
    
                var createIndexDescriptor = new CreateIndexDescriptor(_indexName)
               .Mappings(ms => ms
                               .Map<T>(m => m.AutoMap())
                        )
                .InitializeUsing(new IndexState() { Settings = indexSettings })
                .Aliases(a => a.Alias(aliasName));
    
                var response = _elasticClient.CreateIndex(createIndexDescriptor);
            }
    
            _elasticClient.Index<T>(node, idx => idx.Index(_indexName));
        }
    }
    
    public void Create(T节点),其中T:class
    {        
    如果(!\u elasticClient.indexists(\u indexName.Exists)
    {
    var indexSettings=新的indexSettings();
    indexSettings.NumberOfReplicas=1;
    indexSettings.NumberOfShards=3;
    var createIndexDescriptor=新的createIndexDescriptor(_indexName)
    .Mappings(ms=>ms
    .Map(m=>m.AutoMap())
    )
    .InitializeUsing(新IndexState(){Settings=indexSettings})
    .别名(a=>a.别名(别名名称));
    var response=\u elasticClient.CreateIndex(createIndexDescriptor);
    }
    _elasticClient.Index(节点,idx=>idx.Index(_indexName));
    }
    }
    
    我解决了我的问题,请看下面

    nest中的
    .Map()
    方法对
    T
    使用类约束。您需要将相同的类约束添加到泛型
    T

    public void Create<T>(T node)
        where T: class
    {
        // your code here
    }
    
    公共void创建(T节点)
    T:在哪里上课
    {
    //你的代码在这里
    }