假设我想使用 Elasticsearch 实现网站的通用搜索,顶部搜索栏将能够在整个网站上查找各种不同类型的资源。文档当然是可以找到的(通过 tika 上传/索引),但也会有像客户、账户和其他人等其他东西。
出于架构原因,大多数非文档内容(客户、账户)将存在于关系型数据库中。
在实现此搜索时,选项#1是创建所有内容的文档版本,然后仅使用 Elasticsearch 运行搜索的所有方面,完全不依赖关系型数据库来查找不同类型的对象。
选项#2是仅使用 Elasticsearch 索引文档,这意味着对于通用的“站点搜索”功能,您必须将多个搜索分配给多个系统,然后聚合结果,然后返回它们。
选项#1似乎更优越,但缺点是它要求 Elasticsearch 在生产关系型数据库中拥有许多东西的副本,并且这些副本在事物更改时保持更新。
保持这些存储同步的最佳选项是什么?我的想法是通用搜索使用选项#1是更好的选择。是否有选项#3?