如何优化solr指数。 我想优化我的solr索引,我尝试在solrconfig.xml中更改它被索引但我想知道如何验证它们是否已经过优化以及索引优化涉及哪些内容。
答案 0 :(得分:15)
我发现这是优化Solr索引的最简单方法。在我的上下文中,“优化”意味着合并所有索引段。
curl http://localhost:8983/solr/<core_name>/update -F stream.body=' <optimize />'
答案 1 :(得分:13)
在开始之前检查相应核心的大小。
打开1号航站楼:
http.request.full_uri contains <string-in-url>
打开终端2并执行:
watch -n 10 "du -sh /path to core/data/*"
而不是&#34;核心&#34;,更新您的核心名称。
您可以看到核心的大小将逐渐增加,大约是索引数据大小的两倍,并且会突然减少。这需要时间取决于您的solr数据。
例如,50G索引数据峰值接近90G并降至优化的25G数据。通常这个数据量需要30-45分钟。
答案 2 :(得分:6)
您需要传递optimize=true
来更新solr请求以优化solr。
答案 3 :(得分:2)
有多种方法可以优化索引。 您可以触发solr基本脚本之一: http://wiki.apache.org/solr/SolrOperationsTools#optimize
您还可以在(完整)导入时或在添加新数据时设置optimize=true
。
...或只是使用optimize=true
也许这对您的需求也很有意义: http://wiki.apache.org/solr/UpdateXmlMessages#A.22commit.22_and_.22optimize.22
答案 4 :(得分:1)
Optimize 认为它是 forceMerge。优化操作重新组织核心(或每个分片)中的所有 Segment 并将它们合并为 1 个单独的 Segment(默认为 1 个 Segment)
优化:可以在solrconfig.xml中指定MergePolicy,这样Solr会自己合并segments。手动触发优化 http://hostname:port/solr/
回答你下一个问题——如何验证优化是否完成?您可以检查 Solr UI 中的 Core/Shard Overview 选项卡,该选项卡将表示段的计数。您还可以验证优化前后/data/index文件夹中的段大小。
Optimize/forceMerge 的表现更好,但操作仍然很昂贵。
https://wiki.apache.org/solr/SolrPerformanceFactors#Optimization_Considerations:
“优化成本非常高,如果指标不断变化,轻微的性能提升不会持续太久。”
答案 5 :(得分:0)
为了测试您做了多少更改,您只需编写自定义索引器并添加随机生成的内容。添加大量文档(500.000或1.000.000)并测量所需时间。
根据上面分享的文章,我给自己做了一个自定义索引器,并且我管理员优化了将文档索引80%所花费的时间。
答案 6 :(得分:0)
在优化Solr核心/碎片数据时,就像运行这样的命令一样简单:
curl http://hostname:8980/solr/<COLLECTION_NAME>/update?optimize=true'
但是请注意,这不是免费的-如果您有大量数据,您最终可能会在Solr节点上获得大量I / O,并且过程本身会花费大量时间。在大多数情况下,您要从调整合并过程开始,而不是强制合并索引本身。
在Lucene / Solr革命期间,我就该主题进行了讨论-如果您想看一下幻灯片,并且此处的视频是链接:https://sematext.com/blog/solr-optimize-is-not-bad-for-you-lucene-solr-revolution/