1

我们计划为我们的数据库实现分片,并且也希望为分片提供 Solr 搜索。(对于使用“like”、“order by”、“group by”等的查询)

这种设计的最佳工具是什么?

我已经检查了其中的几个,但我无法决定其中任何一个。

1) Hibernate Shards - 尽管它在 Hibernate 主页上非常明确地列出,但似乎并没有得到积极的支持。

2) SolrJ - 看起来不错,但如何将我的 QueryDSL 查询转换为 Solr 查询?

3) SolrCloud - 与 SolrJ 相同的问题

4) Hibernate Search - 允许我使用 QueryDSL,但这意味着我必须自己管理分片功能,因为在这种情况下,Lucene 将用作库。所以每个分片都有自己的 Lucene 句柄,手动让它们知道分片会很痛苦(例如,合并来自多个分片的“排序依据”结果。我假设 SolrCloud 会自动为我做这件事)。

5) Elasticsearch - 看起来非常类似于 SolrCloud(又名 Solr 4.0)

所以基本上,我的问题归结为:

如何将 QueryDSL 与一些支持开箱即用的分片的 lucene 产品一起使用。(注意:我对 SolrCloud 或 ElasticSearch 提供的默认分片策略很满意)。

我不想编写一个转换器来将 QueryDSL 查询转换为 SolrCloud/ElasticSearch 的 HTTP get/put 请求。

4

2 回答 2

0

Querydsl 直接支持 Lucene 和 Hibernate Search。对于 Solr 和 ElasticSearch,您将需要使用 Solr 和 ElasticSearch 特定的查询语言。

于 2013-10-31T08:39:28.297 回答
0

作为记录,Hibernate Search 确实提供了透明的分片,因此在多个分片上进行排序不是问题。

很高兴地报告我们现在也支持 Elasticsearch:

Solr 将在未来出现(欢迎帮助!);这个想法是为人们提供与 Hibernate ORM 的完美集成,这是一个很好且稳定的 API,而选择在本地使用 Lucene 实例而不是远程使用 Solr 或 Elasticsearch 是一个正交方面。

于 2016-05-27T14:52:04.853 回答