【问题标题】:Need help re-architecting and optimizing a large solr index [closed]需要帮助重新构建和优化大型 solr 索引 [关闭]
【发布时间】:2014-04-02 01:35:39
【问题描述】:

我有一个可用的 Solr 索引,但我需要帮助重新构建它以使其更小、更快、更少的资源密集型。

当前:

  • 一个索引保存过去 10 年的数据。
  • 每天有 5k 个新文本文件被编入索引
  • 索引大小约为。每年 40 GB,因此 10 年总计 400 GB。

要求:

  • 能够使用新文件每晚更新索引
  • 能够从 src 文件重建索引 - 希望能加快速度。
  • 能够保持当前大量的分面字段(30 个左右)。
  • 能够保持“突出显示” - 因此可以显示提取文档中的文本。

问题:

  1. 从头开始重建索引时,有哪些权衡(构建时间、内存要求、处理要求)以及何时发出“提交”和“优化”?:

    • 构建一个单一的 10 年索引(在构建期间难以分发)
    • 每年建立 1 个索引 - 然后合并它们
    • 每月、每周或每天构建 1 个索引,然后将它们合并在一起
  2. 如何合并(有哪些取舍):

    • 使用命令行lucene索引合并工具,还是solr的web实例,还是JAVA API?
    • 合并时间还需要多少临时磁盘空间(源索引 + 最终索引大小除外)
    • 合并是否有内存要求?
    • 是一次合并两个更好还是同时合并所有更好?
    • 有没有办法让lucene命令行索引合并工具输出进度?
  3. 如何运行索引:

    • 一个大索引
    • 分片索引 - 多核 - 每年都有自己的核心。
  4. 如何应用每日更新:

    • 应用于主索引
    • 将新的每日核心创建为新的分片而不是合并。
    • 创建新的每日核心并将每日核心与完整索引合并
  5. 内存、磁盘和 CPU 有哪些注意事项?你猜一台机器的需求是什么(对于开发/原型环境,而不是互联网规模生产)?

  6. 我需要继续突出显示。有没有办法不存储文本字段,或者缩小? doc 以减少最终索引的大小而不删除在搜索结果中突出显示的功能?

【问题讨论】:

    标签: java solr lucene indexing


    【解决方案1】:

    如何合并(有哪些取舍)

    您为什么不考虑“分片”?在这种情况下,您不必合并它们。您可以每 2 年或您决定的任何时间段保持数据分片。查询也会更快,因为它将使用分布式搜索功能。

    看看:

    https://wiki.apache.org/solr/DistributedSearch

    http://wiki.apache.org/solr/SolrCloud

    【讨论】:

    • 谢谢。我需要在单机上运行。虽然我知道这一点,但我不知道内存/CPU 要求对于跨分片拆分的相同数量的数据有何变化。我可能会尝试使用 1 次构建的索引和每天更新的 1 索引进行多核分片。
    猜你喜欢
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    相关资源
    最近更新 更多