本文介绍C#使用Elasticsearch的基本方法,并提供一个demo
以下说明中包含的http调用,为ElasticsearchTestController中编写的测试方法
初始化
引用NEST
创建ElasticClient
对象
ElasticClient elasticClient = new ElasticClient(new ConnectionSettings(new Uri(address));
新增索引
关键代码
CreateIndexResponse createIndexResponse = await elasticClient.Indices.CreateAsync(indexName, createIndexDescriptor =>
{
return createIndexDescriptor.
Map(typeMappingDescriptor =>
{
return typeMappingDescriptor.Properties(propertiesSelector =>
{
foreach (PropertyInfo propertyInfo in typeof(StudentForElasticsearch).GetProperties())
{
if (!propertyInfo.CanWrite)
continue;
switch (propertyInfo.PropertyType.Name)
{
case nameof(Int16):
case nameof(Int32):
case nameof(Int64):
case nameof(UInt16):
case nameof(UInt32):
case nameof(UInt64):
case nameof(Decimal):
case nameof(Single):
case nameof(Double):
case nameof(Byte):
propertiesSelector = propertiesSelector.Number(propertyDescriptor => propertyDescriptor.Name(ToJavaScriptPropertyName(propertyInfo.Name)));
break;
case nameof(Boolean):
propertiesSelector = propertiesSelector.Boolean(propertyDescriptor => propertyDescriptor.Name(ToJavaScriptPropertyName(propertyInfo.Name)));
break;
case nameof(DateTime):
propertiesSelector = propertiesSelector.Date(propertyDescriptor => propertyDescriptor.Name(ToJavaScriptPropertyName(propertyInfo.Name)));
break;
case nameof(String):
propertiesSelector = propertiesSelector.Keyword(propertyDescriptor => propertyDescriptor.Name(ToJavaScriptPropertyName(propertyInfo.Name)));
break;
default:
break;
}
}
return propertiesSelector;
});
});
});
为索引添加别名
PutAliasResponse putAliasResponse = await elasticC