每日一博 | 基于 Kafka 和 Elasticsearch 构建实时站内搜索功能的实践
目前我们在构建一个多租户多产品类网站,为了让用户更好的找到他们所需要的产品,我们需要构建站内搜索功能,并且它应该是实时更新的。本文将会讨论构建这一功能的核心基础设施,以及支持此搜索能力的技术栈。 问题的定义与决策 为了构建一个快速、实时的搜索引擎,我们必须做出某些设计决策。我们使用MySQL作为主数据库存储,因此有以下选择: 直接在MySQL数据库中查询用户在搜索框中输入的每个关键词,就像%#{word1}%#{word2}%...这样。 😐 使用一个高效的搜索数据库,如Elasticsearch。😮 考虑到我们是一个多租户应用程序,同时被搜索的实体可能需要大量的关联操作(如果我们使用的是MySQL一类的关系型数据库),因为不同类型的产品有不同的数据结构,所以我们还可以能需要同时遍历多个数据表来查询用户输入的关键词。所以我们决定不使用直接在MySQL中查询关键词的方案。🤯 因此,我们必须决定一种高效、可靠的方式,将数据实时地从MySQL迁移到Elasticsearch中。接下来需要做出如下的决定: 使用Worker定期查询MySQL数据库,并将所有变化的数据发送到Elastics...



