【问题标题】:Implementing ElasticSearch in C# with a mySQL DB使用 mySQL DB 在 C# 中实现 ElasticSearch
【发布时间】:2015-05-05 03:46:37
【问题描述】:

我们的一些搜索页面中出现了很多错误,这可能是由于我们的 mySQL 数据库中的记录过多造成的。我们正在考虑如何解决它。其中之一是尝试 ElasticSearch。我们仍会将所有数据存储在 mySQL 数据库中,但会使用 ElasticSearch 的强大功能进行某些查询。

那么,我们如何使用 C# 构建的网站来实现 ElasticSearch,而我们的网站目前有一个 mySQL DB 用于数据存储?

注意:为了直接回答我的问题,假设在搜索页面上除了使用 ElasticSearch 之外没有其他方法可以解决我们的问题。

【问题讨论】:

    标签: c# mysql search elasticsearch


    【解决方案1】:

    如果有人通过搜索找到此线程:Elastic 已弃用河流。 他们提倡使用外部工具来使用数据库中的数据填充您的索引。

    上面提到的博客文章已经更新,并且有一篇新文章可以帮助人们实现一种工具,该工具可以使 Elasticsearch 使用 sql 数据库中的数据保持最新状态:http://voormedia.com/blog/2015/12/how-we-keep-our-elasticsearch-updated-with-mssql-database

    【讨论】:

      【解决方案2】:

      我想首先您需要了解倒排索引的工作原理,以确保 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

      【讨论】:

      • Tnx 为此。在我们尝试使用 ElasticSearch 时,我会考虑您的回答。
      【解决方案3】:

      您需要有一个 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 上建立索引,您就可以使用它们进行搜索,

      1. 弹性搜索 REST API
      2. 弹性搜索 .NET 客户端 - https://github.com/elasticsearch/elasticsearch-net

      【讨论】:

      • 我一直在寻找更详细的答案,但我认为这足以让我们开始使用 ElasticSearch。我只会查看您提供的链接。谢谢!
      【解决方案4】:

      您可以使用jdbc river 将Elasticsearch 连接到您的mysql 数据库,或者您可以使用NEST 编写自定义C# 代码来将您的数据加载到Elasticsearch。还请阅读此answer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-03
        • 2012-07-24
        • 1970-01-01
        • 2017-03-17
        • 1970-01-01
        • 2017-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多