【ElasticSearch Nest】索引、别名
索引API
获取索引
var settings = new ConnectionSettings(new Uri("http://****:9200/"));
var client = new ElasticClient(settings);
{
var getIndexResponse = client.Indices.Get("index1");
if (getIndexResponse.IsValid)
{
if (getIndexResponse.Indices.Any())
{
IndexState index = getIndexResponse.Indices["index1"];
int numberOfReplicas = index.Settings.NumberOfReplicas.Value;
int numberOfShards = index.Settings.NumberOfShards.Value;
foreach (var property in index.Mappings.Properties)
{
var name = property.Value.Name;
var type = property.Value.Type;
}
}
}
}
创建索引
var createIndexResponse1 = client.Indices.Create("index111");
var createIndexResponse2 = client.Indices.Create("index222", c => c
.Settings(s => s
.NumberOfShards(1)
.NumberOfReplicas(1)
.Setting("index.write.wait_for_active_shards", "2"))
.Aliases(a => a
.Alias("alias_1")
.Alias("alias_2", aa => aa//?
.Filter<object>(f => f
.Term("user", "kimchy")
)
.Routing("kimchy")
))
.Map(m => m
.Properties(p => p
.Text(t => t
.Name("field1")
)
)
)
);
删除索引
var deleteIndexResponse = client.Indices.Delete("index111");
reindex
var reindexOnServerResponse = client.ReindexOnServer(r => r
.Source(s => s.Index("index1"))
.Destination(d => d.Index("index333"))
);
修改setting
var settingsResponse = client.Indices.UpdateSettings("twitter", u => u
.IndexSettings(i => i
.NumberOfReplicas(2)
.RefreshInterval(Time.MinusOne)
.Analysis(a => a
.Analyzers(an => an
.Custom("content", c => c
.Tokenizer("whitespace")
)
)
)
)
);
别名API
查看别名
{
//查看全部别名
var catResponse1 = client.Cat.Aliases();
if (catResponse1.IsValid)
{
catResponse1.Records.Select(r => r.Alias + "->" + r.Index);
}
//查看指定通配符的别名
var catResponse2 = client.Cat.Aliases(c => c.Name("alias_*"));
//查看指定名称的别名
var catResponse3 = client.Cat.Aliases(c => c.Name("alias_2"));
}
批量操作(添加、删除别名)
{
var aliasResponse1 = client.Indices.BulkAlias(a => a
.Remove(al => al
.Index("index222")
.Alias("alias_1")
)
.Add(a1 => a1
.Index("index222")
.Alias("alias_111")
)
.Add(a1 => a1
.Index("index222")
.Alias("alias_222")
)
.Add(a1 => a1
.Index("index*")
.Alias("alias_all")
)
);
//多个索引库指定一个别名
//指向多个索引的别名,用于执行查询不需要做额外的设置,如果需要用于执行索引操作,则需要在被指向的多个索引中指定用于执行索引操作的索引,否则报错误。需要设置个库is_write_index=true
var aliasResponse2 = client.Indices.BulkAlias(a => a
.Add(a1 => a1
.Index("index*")
.Alias("alias_all")
)
);
//删除指定索引库的全部别名
var aliasResponse3 = client.Indices.BulkAlias(a => a
.RemoveIndex(al => al
.Index("index222")
)
);
}
分类:
08-ElasticSearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南