【问题标题】:Partitioning a current solr index into shards将当前 solr 索引分区为分片
【发布时间】:2012-06-29 19:59:21
【问题描述】:

我一直在分析提高 SOLR 索引性能的最佳方法,并且可能会对当前索引进行分片以使搜索变得分布式。

但是,鉴于我们的索引超过 400GB 并且包含大约 700MM 文档,重新索引数据似乎很麻烦。我一直在玩弄复制索引和删除文档的想法,以此来更有效地创建分片环境。

不幸的是,模数似乎无法用于查询文档的内部数字 ID。我可以使用哪些其他可能的分区策略来通过查询而不是完整的重新索引来删除?

【问题讨论】:

    标签: solr partitioning


    【解决方案1】:

    一个 lucene 工具可以完成这项工作 IndexSplitter,请参阅提到的 here 以及文章链接(日语,用谷歌翻译...)

    【讨论】:

    • lucene 的结构似乎与文章有所不同。下载并提取 lucene 发行版后,以下命令看起来正在拆分索引。
    • java -cp lucene-core-3.4.0.jar:contrib/misc/lucene-misc-3.4.0.jar org.apache.lucene.index.MultiPassIndexSplitter -out /indexes/shards - num 2 /indexes/orig/index/
    【解决方案2】:

    如果您能找到一个逻辑键来对数据进行分区,那么它将在不止一个方面有所帮助。例如。您可以根据一些时间顺序将这些文档拆分为分片吗?

    我们也有类似的情况。我们有一个包含 2.5 亿个文档的索引,这些文档根据创建日期被分成不同的分片。一个主要用例涉及根据创建日期范围在这些分片中进行搜索。因此,搜索仅提交给包含具有给定日期范围的文档的分片。逻辑分区数据可能还有其他好处 - 例如。不同的容量规划,对搜索词应用不同的服务质量等。

    【讨论】:

      【解决方案3】:

      我在another StackOverflow question 中回答了这个问题。我编写了一个命令行实用程序 (Hash-Based Index Splitter),用于根据每个文档的 ID 哈希拆分 Lucene 索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-20
        • 2011-10-15
        • 2011-08-16
        • 2023-04-01
        • 2014-05-29
        • 2012-05-28
        • 2016-11-07
        相关资源
        最近更新 更多