使用 ElasticSearch 和 Azure 搜索作为常规数据存储与搜索相结合是否合适?

Is using ElasticSearch and Azure Search as regular data stores combined with search appropriate?

我们仍在决定使用 Azure VM 上的 ElasticSearch 或 Azure 搜索服务作为我们的搜索存储库。但是,对于用户帐户等,是否需要创建一个单独的数据库(在 SQL Azure 或什至另一个没有 SQL 的数据库中)?

不,无需创建单独的数据库帐户即可使用 Azure 搜索(或 Azure VM 上的 ElasticSearch)。 Azure 搜索是一项基于 REST API 的服务,您可以在其中将数据推送到 "indexed",此时它也可以通过此 REST API 进行搜索。我能想到的唯一一次你可能需要一个 SQL 帐户是使用我们的新索引器,它会自动将数据(和数据更改)从你的 Azure SQL 或 SQL Azure VM 数据库上的服务器。

我想你问的是你是否可以使用 Elasticsearch/Azure 搜索作为应用程序中所有内容的主要商店,而不仅仅是可搜索的数据。

你一定能做到。您需要记住几个方面(我相信除此之外还有其他方面):

  1. 持久性:当搜索索引只是一个索引时,有时 运行 没有副本或只有 1 个副本是可以的。如果你想要强大的持久性,你可能需要至少 3 个索引副本,以确保可用性和对索引损坏和类似事情的弹性。

  2. 一致性。 Elasticsearch 有一个弱一致性模型,它也出现在 Azure 搜索中。您需要在编写应用程序时考虑到这一事实,这会使某些情况变得棘手。 SQL 和 DocumentDB 等其他存储提供了严格一致性选项,这对于主存储来说更容易使用。