如何将MSSQL同步到Elasticsearch?

Tad*_*dej 9 c# sql-server-2008 dapper nest elasticsearch-net

每当我谷歌这个,我发现不推荐使用的"河流"方法.如果这是一个有用的信息,我正在使用Dapper.

那么这几天的解决方案是什么?

Yve*_*omb 12

你的问题是广泛的 - 所以这是指向一些选项的指针.

弹性搜索用于查询数据库和分析数据.

在文章Deprecating Rivers:

客户端库

一年多以来,我们在大多数编程语言中都有Elasticsearch的官方客户端库.这意味着挂钩到您的应用程序并通过现有代码库获取数据应该相对简单.此技术还允许在数据到达Elasticsearch之前轻松地对其进行处理.一个常见的例子是已经使用ORM将域模型映射到数据库的应用程序,并且将域模型挂钩并索引回Elasticsearch往往很容易实现.

有关如何使用弹性搜索的大量文档:

Elasticsearch.Net.

文档将解决以下问题:

安装:

PM> Install-Package Elasticsearch.Net
Run Code Online (Sandbox Code Playgroud)

连接

var node = new Uri("http://mynode.example.com:8082/apiKey");  
var config = new ConnectionConfiguration(node);  
var client = new ElasticsearchClient(config);`  
Run Code Online (Sandbox Code Playgroud)

安全

池和故障转移

建立请求

这就是你需要开发的东西.

响应处理

错误处理

插件

也可以使用Logstash代替Rivers,从中开发了各种插件.

此外,Logstash或类似工具可用于将数据发送到Elasticsearch.例如,Elasticsearch附带的一些河流现在在即将推出的Logstash 1.5中实现为Logstash插件(如CouchDB插件).

额外阅读

虽然这是一种不同的语言和框架-博客的高级搜索您的传统应用程序大卫Pilato 和信息可能会有所帮助浏览.他建议在应用层中进行.

解决评论中的问题.

可以跟踪数据更改.

SQL Server提供了一个内置系统来跟踪数据更改,这是一种自动跟踪数据更改的有效方法,无需实现手动方法来检查更改.

有两种方法可以实现这一点:

使用变更数据捕获:

使用时间戳跟踪数据更改.可以跟踪数据更改的历史记录.

变更数据捕获通过捕获DML更改的事实和已更改的实际数据来提供用户表的历史更改信息.通过使用读取事务日志并对系统影响较小的异步进程捕获更改.

使用变更跟踪:

这样可以减少开销,但不会跟踪历史变化.保留了最新的更改,但没有进一步的回复.

更改跟踪捕获表中的行已更改但不捕获已更改的数据的事实.这使应用程序能够确定使用直接从用户表获取的最新行数据而更改的行.因此,与变更数据捕获相比,变更跟踪在其可以回答的历史问题中更受限制..../...