如何优化solr索引

问题描述 投票:0回答:8

如何优化solr索引。 我想优化我的 solr 索引,因为我尝试在 solrconfig.xml 中更改它的索引,但我想如何验证它们是否已优化以及索引优化涉及哪些内容。

java optimization jakarta-ee lucene solr
8个回答
22
投票

开始前检查各个核心的尺寸。

开放1号航站楼:

watch -n 10 "du -sh /path to core/data/*"

打开终端2并执行:

curl http://hostname:8980/solr/<core>/update?optimize=true

更新您各自的核心名称,而不是“核心”。

您可以看到核心的大小将逐渐增加,大约是索引数据大小的两倍,然后突然减小。这将需要时间取决于您的 solr 数据。

例如,50G 索引数据激增近 90G,并下降至优化的 25G 数据。通常这个数据量需要30-45分钟。

为什么当我删除文档时我的索引目录没有(立即)变小?强制合并?优化?


16
投票

我发现这是优化 Solr 索引的最简单方法。在我的上下文中,“优化”意味着合并所有索引段。

curl http://localhost:8983/solr/<core_name>/update -F stream.body=' <optimize />'

9
投票

您需要通过

optimize=true
更新 solr 请求来优化 solr。

http://[主机名]:[端口]/solr/update?optimize=true


3
投票

优化索引的方法有多种。 您可以触发 solr 基本脚本之一: http://wiki.apache.org/solr/SolrOperationsTools#optimize

您还可以在(完全)导入或添加新数据时设置

optimize=true
。 ...或者简单地使用
optimize=true

触发提交

也许这对您的需求也很有趣: http://wiki.apache.org/solr/UpdateXmlMessages#A.22commit.22_and_.22optimize.22


2
投票

通过优化认为它是forceMerge。优化操作重新组织核心(或每个分片)中的所有分段,并将它们合并为 1 个分段(默认为 1 个分段)

优化:可以在solrconfig.xml中指定MergePolicy,这样Solr就会自己合并Segment。手动触发优化 http://hostname:port/solr//update?optimize=true&maxSegments=1'

回答您下一个问题 - 如何验证优化是否完成?您可以检查 Solr UI 中的 Core/Shard Overview 选项卡,该选项卡将表示段的计数。您还可以验证优化前后 /data/index 文件夹中段的大小。

Optimize/forceMerge 表现更好,但操作仍然昂贵。

https://wiki.apache.org/solr/SolrPerformanceFactors#Optimization_Considerations

“优化成本非常高,如果指数不断变化,轻微的性能提升不会持续太久。”


1
投票

为了测试您所做的更改对索引的优化程度,只需编写自定义索引器并添加随机生成的内容即可。添加大量文档(500.000 或 1.000.000)并测量所需时间。

按照上面分享的文章,我为自己制作了一个自定义索引器,并成功将索引文档所需的时间优化了 80%。


1
投票

当涉及到 Solr 核心/分片数据的优化时,只需运行如下命令即可:

curl http://hostname:8980/solr/<COLLECTION_NAME>/update?optimize=true'

但请注意,这并不是免费的 - 如果您有大量数据,您最终可能会在 Solr 节点上产生大量 I/O,并且该过程本身会花费大量时间。在大多数情况下,您希望从调整合并过程开始,而不是强制合并索引本身。

我在 Lucene/Solr 革命期间就该主题做了一次演讲 - 如果您想查看幻灯片,这里的视频是一个链接:https://sematext.com/blog/solr-optimize-is-对你来说不错-lucene-solr-revolution/


0
投票

如果您有权访问 Solr 基于 Web 的 UI,则可以通过导航到要优化的核心来完成此操作,然后:

  1. 打开“文档”页面/菜单/其他内容
  2. Request-Handler
    设置为
    /update
    (这是默认值),并将文档类型设置为
    XML
    (这对于 JSON 来说可能是可行的,但是...)
  3. 在“文档”文本区域中输入
    <optimize/>
  4. 提交文件

这将启动优化过程。

© www.soinside.com 2019 - 2024. All rights reserved.