使用 mySQL 数据库在 C# 中实现 ElasticSearch
Implementing ElasticSearch in C# with a mySQL DB
我们的一些搜索页面出现了很多错误,这可能是由于我们的 mySQL 数据库中的记录过多所致。我们正在想办法解决它。其中之一是试用 ElasticSearch。我们仍会将所有数据存储在我们的 mySQL 数据库中,但会使用 ElasticSearch 的强大功能进行某些查询。
那么,我们如何在我们使用 C# 构建的网站上实现 ElasticSearch,目前有一个 mySQL 数据库用于数据存储?
注意:为了直接回答我的问题,假设除了使用ElasticSearch之外没有其他方法可以解决我们在搜索页面上的问题。
可以使用jdbc river to connect elastic search to your mysql db, or you can write custom C# code using NEST to load your data into Elasticsearch. Also give this answer一读。
您需要有 elasticsearch river 插件,定期从 mySQL 中提取数据并在 elasticsearch 上建立索引。我遇到了几个这样的插件
elasticsearch-river-jdbc - https://github.com/jprante/elasticsearch-river-jdbc
Elasticsearch-MySQL-River - https://github.com/mallocator/Elasticsearch-MySQL-River
在 elasticsearch 上为数据编制索引后,您可以使用
搜索它们
- 弹性搜索 REST API
- 弹性搜索 .NET 客户端 - https://github.com/elasticsearch/elasticsearch-net
我想您首先需要了解倒排索引的工作原理,以确保 ElasticSearch 是适合您的解决方案:http://en.wikipedia.org/wiki/Inverted_index
然后您需要制定索引策略:您将从 mysql 到 ElasticSearch 的数据索引内容和方式。问题是,在关系数据中,您在行上进行操作,在倒排索引(ElasticSearch、Solr、Lucene 等)中,您在文档上进行操作,因此您需要决定如何将关系数据转换为文档,有几种方法,还有一篇关于在 ElasticSearch 中索引关系数据的可能方法的好文章:
http://voormedia.com/blog/2014/06/four-ways-to-index-relational-data-in-elasticsearch
如果有人通过搜索找到此主题:Elastic 已弃用河流。他们提倡使用外部工具来使用数据库中的数据填充索引。
上面提到的博客文章已经更新,并且有一篇新文章可以帮助人们实现一个工具,该工具可以使 Elasticsearch 与 sql 数据库中的数据保持同步:http://voormedia.com/blog/2015/12/how-we-keep-our-elasticsearch-updated-with-mssql-database。
我们的一些搜索页面出现了很多错误,这可能是由于我们的 mySQL 数据库中的记录过多所致。我们正在想办法解决它。其中之一是试用 ElasticSearch。我们仍会将所有数据存储在我们的 mySQL 数据库中,但会使用 ElasticSearch 的强大功能进行某些查询。
那么,我们如何在我们使用 C# 构建的网站上实现 ElasticSearch,目前有一个 mySQL 数据库用于数据存储?
注意:为了直接回答我的问题,假设除了使用ElasticSearch之外没有其他方法可以解决我们在搜索页面上的问题。
可以使用jdbc river to connect elastic search to your mysql db, or you can write custom C# code using NEST to load your data into Elasticsearch. Also give this answer一读。
您需要有 elasticsearch river 插件,定期从 mySQL 中提取数据并在 elasticsearch 上建立索引。我遇到了几个这样的插件
elasticsearch-river-jdbc - https://github.com/jprante/elasticsearch-river-jdbc Elasticsearch-MySQL-River - https://github.com/mallocator/Elasticsearch-MySQL-River
在 elasticsearch 上为数据编制索引后,您可以使用
搜索它们- 弹性搜索 REST API
- 弹性搜索 .NET 客户端 - https://github.com/elasticsearch/elasticsearch-net
我想您首先需要了解倒排索引的工作原理,以确保 ElasticSearch 是适合您的解决方案:http://en.wikipedia.org/wiki/Inverted_index
然后您需要制定索引策略:您将从 mysql 到 ElasticSearch 的数据索引内容和方式。问题是,在关系数据中,您在行上进行操作,在倒排索引(ElasticSearch、Solr、Lucene 等)中,您在文档上进行操作,因此您需要决定如何将关系数据转换为文档,有几种方法,还有一篇关于在 ElasticSearch 中索引关系数据的可能方法的好文章: http://voormedia.com/blog/2014/06/four-ways-to-index-relational-data-in-elasticsearch
如果有人通过搜索找到此主题:Elastic 已弃用河流。他们提倡使用外部工具来使用数据库中的数据填充索引。
上面提到的博客文章已经更新,并且有一篇新文章可以帮助人们实现一个工具,该工具可以使 Elasticsearch 与 sql 数据库中的数据保持同步:http://voormedia.com/blog/2015/12/how-we-keep-our-elasticsearch-updated-with-mssql-database。