Dal*_*ham 3 c# elasticsearch nest
我很难在NEST 2.0上找到很好的细节,这是我使用的Elasticsearch 2.2的包装器.我的问题是:我可以在一个对象(具有公共数据成员的类)上进行批量插入,并将其映射到Elasticsearch,其中只有我的C#类和ES服务器映射之间的映射字段将保存?并且它不会在我的班级中添加我不想要的其他字段?
现在我有一个包含字符串和双精度的类以及其他类的列表.我想保存字符串和双精度数,但不包括我在Elasticsearch上的批量插入列表.它希望在我班级的每个领域保存每一段数据.是否有类成员属性或其他方式说"如果没有映射,请不要添加此字段"我错过了?希望如此.
您可以通过NEST 2.x以多种方式忽略POCO的属性.我们以下面的POCO为例
using Nest;
using Newtonsoft.Json;
[ElasticsearchType(Name = "company")]
public class Company
{
public string Name { get; set; }
[String(Ignore = true)]
public string IgnoreViaAttribute { get; set; }
public string IgnoreViaSettings { get;set; }
[JsonIgnore]
public string IgnoreViaSerializerSpecificAttribute { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
1.在Ignore派生ElasticsearchPropertyAttribute类型(在我们的示例中,StringAttribute在IgnoreViaAttribute属性上)使用属性应用于应该在POCO上忽略的属性
2. .InferMappingFor<TDocument>(Func<ClrTypeMappingDescriptor<TDocument>, IClrTypeMapping<TDocument>> selector)使用连接设置
var settings = new ConnectionSettings(new Uri("http://localhost:9200"))
.InferMappingFor<Company>(i => i
.Ignore(p => p.IgnoreViaSettings)
);
var client = new ElasticClient(settings);
Run Code Online (Sandbox Code Playgroud)
每个实例都缓存这些设置ConnectionSettings.
3.使用应用于POCO属性的ignore属性,该属性由序列化程序中IElasticsearchSerializer使用和检查的内部所理解CreatePropertyMapping().在默认情况下JsonNetSerializer,这是Json.NET JsonIgnoreAttribute.在我们的示例中,应用于属性的属性证明了这一点IgnoreViaSerializerSpecificAttribute.
| 归档时间: |
|
| 查看次数: |
2028 次 |
| 最近记录: |