我正在尝试使用nest在elasticsearch中创建一个新索引,这个新索引有别名,所以我需要一个indexname示例来实现这一点。这是我试图实现的请求:
PUT activeIndexName
{
"aliases": {
"indexName": {}
}
}
我在nest中的代码:
public bool CreateIndex(string indexName)
{
string date = DateTime.Now.Date.ToString("yyyy.MM.dd", CultureInfo.InvariantCulture);
string activeIndexName = string.Format("{0}-{1}-000001", indexName, date);
IDictionary<IndexName, IAlias> aliasDict = new Dictionary<IndexName, IAlias>();
IndexName indexNameDict = IndexName.From<IndexName>(indexName);//PROBLEM HERE
aliasDict.Add(indexNameDict, new Alias());
CreateIndexRequest createIndexRequest = new CreateIndexRequest(activeIndexName)
{
Aliases = new Aliases(aliasDict)
};
CreateIndexResponse response = _client.Indices.Create(createIndexRequest);
return response.IsValid;
}
我从上面的代码中得到的错误信息是:
Index name is null for the given type and no default index is set. Map an index name using ConnectionSettings.DefaultMappingFor<TDocument>() or set a default index using ConnectionSettings.DefaultIndex().
在我看来,似乎索引需要在那里才能被创建?但是,它需要使用别名创建。nest.indexname没有构造函数,因此我不确定如何拥有它的示例,以便可以创建字典<indexname,ialias>。
2条答案
按热度按时间czq61nw11#
IndexName
实现从string
因此,您可以通过替换具有
ghhaqwfi2#
Aliases
工具IEnumerable<IndexName, IAlias>
和一个Add(IndexName, IAlias)
方法,因此可以使用集合初始值设定项将代码缩短为