gpt4 book ai didi

java - 搜索多个 solr 核心的最佳方式

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:31 25 4
gpt4 key购买 nike

我正在开发一个充当 solr 客户端的应用程序。我必须进行多核搜索,其中字段完全相同。我不知道实现它的最佳方法。我在java中使用solrj。使用 solr 的分布式搜索或使用应用程序端的线程在每个单独的核心上进行搜索最好是什么?

示例

http://XXXX:8983/solr/core1
http://XXXX:8983/solr/core2
http://XXXX:8983/solr/core3
http://XXXX:8983/solr/core4

每个核心中的字段都是相同的。

我想有效地搜索所有颜色并生成结果集。

Solr UI

此时我有26个核心,最大的有文档数量:4677529大小:56.7 GB

其他人也有类似的值(value)观。核心数量呈增加趋势。

谢谢

最佳答案

据我从问题和评论中了解到,您的场景非常适合 SolrCloud,它是在 Solr 中启用一组新的分布式功能的配置的名称。

集合是一个完整的逻辑索引,可以物理分布在更多 Solr 实例中。

当您必须向集合提交查询时,您所要做的就是像之前对核心所做的那样引用集合。 SolrJ 客户端应该以不同的方式构建,您必须指定zookeeper 连接字符串,使用CloudSolrClient 并指定默认集合。

String zkHostString = "zkServerA:2181,zkServerB:2181,zkServerC:2181/solr";
CloudSolrClient solr = new CloudSolrClient.Builder().withZkHost(zkHostString).build();
solr.setDefaultCollection("collectionName");

这让您可以选择以下选项:

  1. 您的配置已经是 SolrCloud 环境,但对此一无所知。让我们检查一下您的 Solr 管理员(取自您的 Solr 实例之一),并查看左侧菜单中是否有“云”菜单。见附图

    Solr Admin - Cloud Menu

在这种情况下,请查看“云”菜单,这将显示集群的网络拓扑以及要在 SolrJ 实现中使用的集合的名称。请参阅附图:

Solr Cloud topology

  • 如果“云”菜单丢失(图 1)。您应该将现有核心从独立的 Solr 配置移至 SolrCloud。
  • 需要明确的是,您无法将现有 Solr 实例从独立切换到 SolrCloud。我建议的最简单方法是创建一个新的 SolrCloud 集群并重新索引所有核心。我还建议看看Solr terminology in a SolrCloud configuration

    以下几行是创建 SolrCloud 的步骤:

    现在您可以开始将文档移动(重新索引)到您创建的新品牌集合中。

    根据要重新索引的文档的大小和数量,您必须创建多个分片,以便在 SolrCloud 实例之间拆分集合。

    我强烈建议在 Playground 上进行练习,例如使用 -cloud -e cloud 参数启动最新版本的 Solr (6.x)。这将在同一服务器上启动更多 Solr 实例和一个独立的 Zookeeper,但请将其视为一个玩具,看看它们是如何工作的。

    关于java - 搜索多个 solr 核心的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43717563/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com