Ser*_*kiy 5 elasticsearch nest
在NEST 2.0/ElasticSearch.NET中删除了IdField方法.我现在在2.0中找不到如何在流利的Api中做到这一点的文档.有什么建议?谢谢.
NEST 2.x中的Id推断与NEST 1.x非常相似.基本上有三种方式:
Id
POCO上命名的属性推断Id . 例如,假设您具有索引到Elasticsearch的以下类型
class MyDTO
{
public Guid Id { get; set; }
public string Name { get; set; }
public string OtherName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
NEST将寻找Id
在POCO上找到的属性,并使用此属性的值作为文档的id
ElasticsearchType
属性您可以ElasticsearchType
使用POCO属性并使用该IdProperty
属性向NEST发送信号,以便为文档ID使用不同的属性.例如,
[ElasticsearchType(IdProperty = nameof(Name))]
class MyOtherDTO
{
public Guid Id { get; set; }
public string Name { get; set; }
public string OtherName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这将使用该Name
属性作为文档ID
ConnectionSettings
' InferMappingFor<T>
方法您可以配置ConnectionSettings
为推断给定类型的id属性
var connectionSettings = new ConnectionSettings(new Uri("http://localhost:9200"))
.InferMappingFor<MyOtherDTO>(m => m
.IdProperty(p => p.OtherName)
);
Run Code Online (Sandbox Code Playgroud)
这将使用该OtherName
属性作为文档ID.
这是每个ConnectionSettings
实例缓存的,所以如果它不变,我建议在启动时配置设置并在应用程序的生命周期中使用它们(你也可以使用ElasticClient
单例;它是线程安全的).
用InferMappingFor<T>
,还可以设置为CLR类型,索引名称和类型名以及重命名任何特性(即映射POCO属性在ES映射不同的属性名),并忽略POCO性质.
id推理的优先顺序是:
InferMappingFor<T>()
IdProperty()
上 ConnectionSettings
ElasticsearchTypeAttribute
关于POCOId
POCO上命名的属性中推断Id 归档时间: |
|
查看次数: |
2942 次 |
最近记录: |