lucene 如何优化solr索引

qlvxas9a  于 2022-11-07  发布在  Lucene
关注(0)|答案(7)|浏览(239)

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

wljmcqd8

wljmcqd81#

在开始之前,请检查相应芯的尺寸。
打开端子1:

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

打开2号航站楼并执行:

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

而不是“核心”,更新您各自的核心名称。
你可以看到核心的大小会逐渐增加,大约是索引数据的两倍,然后会突然减少。这需要的时间取决于你的solr数据。
例如,50 G的索引数据峰值接近90 G,然后唐斯到优化的25 G数据。通常,这一数据量需要30- 45分钟。
为什么当我删除文档时,索引目录没有立即变小?强制合并?优化?

pqwbnv8z

pqwbnv8z2#

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

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

hfwmuf9z3#

您需要传递optimize=true以更新solr请求来优化solr。

oyt4ldly

oyt4ldly4#

优化索引的方法有很多种,你可以触发solr基本脚本:http://wiki.apache.org/solr/SolrOperationsTools#optimize
您还可以在(完全)导入或添加新数据时设置optimize=true ......或者简单地使用optimize=true触发提交
也许这也可能是有趣的为您的需要:http://wiki.apache.org/solr/UpdateXmlMessages#A.22commit.22_and_.22optimize.22

zzlelutf

zzlelutf5#

优化操作将其视为forceMerge。优化操作重新组织Core中(或每个碎片)的所有段,并将它们合并为1个单独的段(默认为1个段)
要优化:您可以在solrconfig.xml中指定MergePolicy,这样Solr将自己合并段。要手动触发优化,请执行以下操作:http://hostname:port/solr/<COLLECTION_NAME>/update?optimize=true&maxSegments=1'
为了回答您的下一个问题-如何验证优化是否完成?您可以检查Solr UI中的Core/Shard Overview选项卡,它将指示段的计数。您还可以在优化前后验证/data/index文件夹中的段的大小。

Optimize/forceMerge的性能更好,但仍然是开销很大的操作。
https://wiki.apache.org/solr/SolrPerformanceFactors#Optimization_Considerations:
“优化的代价很大,如果指数不断变化,轻微的性能提升不会持续很久。”

lsmd5eda

lsmd5eda6#

为了测试你做了多少改变优化了索引,只需编写一个自定义索引器,并添加随机生成的内容。添加大量文档(500.000或1.000.000),并测量所需的时间。
根据上面分享的文章,我为自己做了一个自定义索引器,并将索引文档所需的时间优化了80%。

dxxyhpgq

dxxyhpgq7#

要优化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/

相关问题