ElasticsearchCRUD使用(四)【使用EF从SQLServer到Elasticsearch的数据传输】

释放双眼,带上耳机,听听看~!

AdventureWorks2012用作数据库,可以在这里下载。 您需要在代码工作之前安装数据库。

应用程序

创建一个新的控制台应用程序,并从NuGet下载ElasticsearchCRUD和Entity Framework。
ElasticsearchCRUD使用(四)【使用EF从SQLServer到Elasticsearch的数据传输】

从AdventureWorks数据库创建代码第一个数据库。

向项目添加一个新项,选择ADO.NET实体数据模型:
ElasticsearchCRUD使用(四)【使用EF从SQLServer到Elasticsearch的数据传输】
现在从数据库选项首先选择代码。 数据库已经存在。
ElasticsearchCRUD使用(四)【使用EF从SQLServer到Elasticsearch的数据传输】
从Person架构添加所有表。 Address表和Person表将用作文档根。
ElasticsearchCRUD使用(四)【使用EF从SQLServer到Elasticsearch的数据传输】

创建的Address类需要更改。 必须删除DbGeography SpatialLocation,因为这不是支持的类型。 在ElasticsearchCRUD V1.0.8或更高版本中,可以使用JsonIgnore属性忽略这一点。

选择实体并将文档添加到Elasticsearch。 Address 传输实现如下:

一次选择了一百个实体,并将其添加到ElasticsearchCRUD上下文中。 这只是将对象添加到内存集合中。 调用SaveChanges方法时,将每个实体序列化为JSON对象。 当所有项目都被序列化时,HttpClient实例将HTTP批量POST请求中的所有对象发送到Elasticsearch。 直到所有项都被传输为止。 ElasticsearchCRUD将所有子元素序列化为1-N。 对已经转换的父对象的任何引用都将被忽略并保存为空属性。

创建的Elasticsearch 映射如下(对于Person和Address文档):

可以使用ElasticsearchCRUD如下读取保存的对象。

然后可以在控制台应用程序中使用。 完成后,具有嵌套子对象的所有对象将作为文档保存在Elasticsearch中。

如果您只希望保存父实体,并且不包含子实体(Elasticsearch中的NESTED对象),则可以在ElasticsearchCRUD上下文构造函数中设置此选项:

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索