PostgreSQL PostGIS与ElasticSearch空间搜索的比较

17

我正在处理一个搜索查询,需要进行地理空间过滤(即过滤掉一定半径范围之外的所有元素)。我们的基础架构中既有PostgreSQL又有ElasticSearch,我正在评估两者哪个更适合使用。

我并不是在问“哪个更好”,但客观的优缺点列表会很有帮助,涉及易于实施、性能、可扩展性等方面。


我已经使用Postgres/Postgis多年了,现在准备开始使用Lucene和Solr进行地理编码和模糊地址匹配的测试(虽然我从未使用过,但我看过一些非常积极的演示)。如果我发现任何对你有用的东西,我会告诉你的。你正在寻找什么样的数据集?你能否提供更多关于你可能运行的查询类型的信息? - John Powell
@JohnBarça 那太好了,请让我知道如果你发现了有趣的东西。我对两种类型的查询感兴趣(虽然在本质上非常相似):1)获取一组结果,这些结果在某个特定的接近度内,没有特定的顺序(即按接近度过滤),2)返回按接近度排序的一组结果,最近的排在前面。 - lmirosevic
1个回答

16
PostGIS的扩展方式与PostgreSQL相同。PostGIS索引的工作原理与其他关系型数据库基本相似,你可以在这里查看here
如果你点击链接,会发现它解释了使用某种几何算法进行索引的过程,该算法在每次插入操作时执行,因此在实时应用程序中可能不够响应。
而Elasticsearch具有实时索引功能,基于Lucene索引。Elasticsearch通常更适合于实时性要求较高的应用程序,而不是PostgreSQL。
PostgreSQL的巨大优势在于其简单性。使用PostgreSQL更容易实现、测试和维护此类功能。例如,我更喜欢快速基于PostgreSQL创建原型,如果由于大量写入等原因导致性能下降,我会切换到Elasticsearch实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接