欢迎投稿

今日深度:

【大数据开发运维解决方案】Solr公共读写调优建议,是一个独立的企业级搜

【大数据开发运维解决方案】Solr公共读写调优建议,是一个独立的企业级搜


文章目录

  • 前言
  • Solr调优部分总结
    • 1、Schema的配置优化•uniqueKey定义为long类型
    • 2、优化索引方案
    • 3、优化查询方案
  • 总结


前言

Solr是一个开源搜索平台,用于构建搜索应用程序。 是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。


Solr调优部分总结

博主在工作中有一个基于Solr的全文检索项目,由于要求及时响应,故对Solr集群做了一些调优!
当Solr索引数据存放在本地磁盘或者HDFS时,可以从以下几个方面进行调优配置:

1、Schema的配置优化•uniqueKey定义为long类型

说明:

  • long类型的查询性能优于string类型,如果需要定义为string类型,可以在业务层建立long到string的映射。
  • 建议unqiueKey字段配置required=“true”。
  • 建议uniqueKey字段配置docValues=“true”。
  • 为了获得更好的查询性能,建议查询时显式地指定返回字段为uniqueKey字段。
  • 需要排序、统计的字段配置为docValues=“true”,可以有效节省内存使用(配置docValues="true"后,不需要再配置stored=“true”)

2、优化索引方案

可以通过修改“solrconfig.xml”文件内容来实现以下调优效果。

调优配置项修改结果
提高索引速度,加大索引线程数<maxlndexingThreads>$(solr.maxlndexingThreads:16}</maxlndexingThreads>
增大文档索引缓存<ramBufferSizeMB>1024</ramBufferSizeMB>
增大索引段合并因子<memergeFactor>20</mergeFactor>
加大索引自动硬提交时间maxTime>$fsolr.autoCommit.maxTime:300001</maxTime>
增大索引的自动软提交时间<maxTime>$solr.autoSoftCommit.maxTime:600001</maxTime>
基于docValues获取uniqueKey的值<useDocValueGetField>true</useDocValueGetField>
对docld进行排序,优先顺序读取磁盘<sortDocldBeforeGetDoc>true</sortDocldBeforeGetDoc>
缓存docld,避免二次读取磁盘<useQuickFirstMatch>true< /useQuickFirstMatch>

说明:
useDocValueGetField的使用场景:

  • 返回字段(fl)为uniqueKey
  • uniqueKey为Numberic类型(long/int/float/double)
  • uniqueKey配置docValues=true

useQuickFirstMatch的使用场景:

  • 索引入库后不再更改(删除/合并操作等)

3、优化查询方案

缓存在Solr中充当了一个非常重要的角色,Solr中主要包括以下3种缓存:

  • Filter cache(过滤器缓存),用于保存过滤器(fq参数)和层面搜索的结果;

  • Document cache(文档缓存),用于保存lucene文档存储的字段;

  • Query result(查询缓存),用于保存查询的结果。

    说明:

  • Solr中还包含lucene内部缓存,该缓存用户无法调控。

通过调整这3种缓存,可以对Solr的搜索实例进行调优。

可以通过修改“solrconfig.xml”文件内容配置缓存,如下:

缓存类型修改方案
过滤器缓存<filterCache class=“solr.FastLRUCache” size=“200” initialSize=“200” autowarmCount=“50”/>“size”和“initialSize”值为缓存document id的数量“autowarmCount”为“initialSize”值的1/4,根据实际场景合理设置,过大会占用大量内存
查询结果缓存<queryResultCache class=“solr.FastLRUCache” size="3000"initialSize="3000autowarmCount=“750”/>“size”和“initialSize”的值 = 不同查询和不同排字的数x 每次询字最数x2."autowarmCount”值为“initialSize”值的1/4.
文档缓存<documentCache class=“solr.FastLRUCache” size="1000"initialSize=“1000”/>”size”和“initialSize”的值 = 一次询返回最大的文档数量x实例询的并发数

总结

Solr作为全文检索服务器时,主要是从Solr自身JVM、Schema、Solrconfig方面以及服务器性能上进行调优。

www.htsjk.Com true http://www.htsjk.com/solr/45669.html NewsArticle 【大数据开发运维解决方案】Solr公共读写调优建议,是一个独立的企业级搜 文章目录 前言 Solr调优部分总结 1、Schema的配置优化•uniqueKey定义为long类型 2、优化索引方案 3、优化查询方...
评论暂时关闭