2016-12-05 43 views
0

我对使用ElasticSearch有点困惑。我现在有一个关系数据库(Mysql)的应用程序(Ruby on Rails),我试图从ElasticSearch提供的搜索功能中受益。我仍然想像以前一样使用我的关系数据库,但我只想使用ElasticSearch进行搜索。因此,我可以使用ES作为辅助存储吗?如何告诉我的应用程序总是将数据从Mysql复制到ES?这里有最佳做法吗?澄清弹性搜索的用处

我也听说couchdb很适合搜索,它是ES的替代品还是提供不同的功能?

回答

1

您可以使用更改数据捕获来捕获MySQL中的更改,并使用Logstash或StreamSets(JDBC输入,Elasticsearch输出)将这些更改正确地传输到Elasticsearch。您准确使用了MySQL的哪个版本和存储引擎?

关于CouchDB--它不是Elasticsearch或任何其他面向搜索的数据存储的替代品。

+0

回答不应该包含问题本身,澄清问题,以帮助您更好地理解OP的问题应该是对OP的帖子的意见(我知道你还没有代表这样做,所以它在这里罚款) –

1

Elasticsearch可以用作辅助数据存储。 我们使用Elasticsearch进行搜索,因为它提高了我们的搜索性能。 (我们拥有数百万条记录进行搜索)

我们采取的方法:

  1. 使用logstash摄取的初始数据。 (数据库作为输入,Elasticsearch作为输出)。
  2. 当前应用程序负责更新MySQL中的记录。只要有更新,相同的更新被推送到应用程序读取的队列中,并用于将这些更改索引到elasticsearch。

确保您为elasticsearch文档使用可识别的唯一documentId。这将有助于更新记录。