下面的图片就像我想要完成的一样。
另一个针对不同域的查询可能是:“向我展示伦敦的所有素食主义餐馆,其中评级> 4.5和餐馆年龄> 5岁和每月平均客户>5000e 225
。
我需要知道的是,为了获得google-esque类型并获得即时结果体验,实现这一点的最佳、最有效的方法是什么?我将在每个表中包含数百万行,每个表中有近100列(不包括索引),每个表中总共有几十千兆字节的原始数据,它们可能起到全文可搜索或充当过滤器/排序标准的作用。
我正在使用PostgreSQL,探索了postgres全文搜索功能,我也在考虑ElasticSearch。postgres本机搜索+索引列是最好的方法吗?postgres + elasticsearch的组合?其他的东西吗?
发布于 2020-04-20 13:57:01
Postgres是一个关系数据库,用于规范涉及多个表的数据和查询,但不太擅长搜索和过滤数据。,而elasticsearch非常适合于的搜索和过滤。
Elasticsearch甚至提供了开箱即用的筛选器缓存,这意味着如果您基于某些列过滤数据,而其他一些用户使用相同的筛选标准,那么弹性将不再过滤数据,并提供其过滤器缓存的结果,如参考链接中所解释的那样。
我知道,在您的应用程序中,无论是MongoDB还是弹性用例,Elasticsearch都不是数据库,它们也不打算替换关系数据库,如果不能承受任何数据损失,请参考此Elasticsearch讨论链接以获取更多信息。。
的底线是,在本例中,您应该只包括用于搜索和筛选的相关属性,但如果您正在存储事务性数据,并且无法承受数据丢失,您也应该将数据存储在Postgres中。
https://www.elastic.co/guide/en/elasticsearch/resiliency/current/index.html是一个很好的读物,它是关于Elasticsearch的重新开发的,基于您的用例,您是否可以使用它作为主要存储库。
https://stackoverflow.com/questions/61323755
复制相似问题