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: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:在哪里上课
{
//你的代码在这里
}