白话 IT 之 聊聊搜索
|
有很多人对两者做过对比。例如:http://solr-vs-elasticsearch.com,从 API 、Infrastructure、Indexing、Searching、Customizability 等多个方面对两者的优缺点进行了详尽的阐述。总体说来,目前两者的版本对于大部分人需要的性能都有比较好的支持。并没有说哪个比另一个好。只有一些小的特性上有一些区别,例如 ES 的 percolation,Solr 的 Pivot Facets 等。这里说几个曾经比较大的区别(这些区别似乎在后来的版本中逐渐不那么明显)。
此外还有一些比较细致的比较,我觉得这篇文章写得很好,推荐阅读:
个人感受 当年在 Square 的时候,其实 Solr 和 ES 都用过。最开始 Sqaure 的搜索后端是用 Solr 写的,和 Ruby 结合。当时 Solr 的一些定制,如 Schema,是一个 Repo,其 ETL 是在另一个 Repo。后来一次 Hackathon,我和几个同事因为好玩儿,用一周的时间用当时刚刚开始火的 ES 重写了一个搜索的原型(当然,只有一些最基本的功能,数据 Pipeline 都没有搭好,比较 Hack 地去写入一些数据。)通过这个简单的原型我们展示了 ES 的一些优势,所以后来就把整个搜索后端移到了 ES 上,做成一个独立的 Java Service。 那么当时我们从 Solr 转到 ES,是因为哪些优势呢? 一就是 Nested Typing。什么意思呢?打个比方,你需要 Index 一些类似于淘宝上店家的信息,同时又需要 Index 一些类似于商品的信息。而这两个数据之间其实是有一种类似于父子关系的联系的。ES 对此有着很好的支持。这样,你在 Indexing 的 ETL 中,可以自然地描述两个数据的关系(商品属于某店家),在查询时,也可以比较方便的写出需要对父类或子类进行 Filter 的 Query。而当时我们的搜索后端正需要这样的一个特性。虽然说用 Solr 也有办法 Work Around,但是那段代码会相对来说比较不易懂,也不好维护。 (编辑:网站开发网_安阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

