热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

solr的相关操作(addDocument,flush,commit,rollback,optimize,close)解析

在solr中通常包含以下一些操作,包括显式的和隐式的操作1、addDocument,对文档进行分析,分词处理,创建索引段segment,每当flush缓冲区中增加的文档,索引文件都会新建一个段segm

在solr中通常包含以下一些操作,包括显式的和隐式的操作

1、addDocument,对文档进行分析,分词处理,创建索引段segment,每当flush缓冲区中增加的文档,索引文件都会新建一个段segment。

2、commit,除了向Directory对象提交索引变化,搜索器query的重新建立

commit提交后,索引flush到硬盘上,并触发listener,创造新的insexSearcher(新的insexReader,从硬盘中加载索引),这样后续的查询就用新的insexsearcher了。

在solr4.0之后,有两种commit,一种是hard commit,一种是softcommit;

hardcommit的时候,要flush document到存储上,并且会warm 新的searcher;而softcommit是在NRT实时搜索中提出的,不会flush到持久化存储,也可以使得document被搜索到,代价比hardcommit要小的多;对实时性要求比较高的场景下,可以做softcommit操作,不过还是要定时hardcommit,确保 索引持久化到存储。

 

3、rollback,回滚对文档的索引的变动

4、flush,当内存中文档的索引的大小大于一定的阀值时,会flush到硬盘上

满足下面两个条件,缓存自动flush到storage上;但是此时并不能搜索到已add但未提交的索引。
    100

     1000

     Solr4.0以后启用了事务日志updatelog的概念,可以保证不丢失数据;在宕机后,完全可以根据updatelog来进行恢复,自动建立索引,及时索引未来得急flush到磁盘上。
5、close,lucene中对IndexWrite的close操作,隐含进行flush操作,后做commit操作

6、optimize(merge),

有点像硬盘上整理磁盘碎片的操作。为了提高搜索速度,它会将索引重组在一起,然后移除需要被删除或是更新的文档,请注意,solr是没有update的这种操作的,只有增加与删除。solr在优化时,将需要删除或是被替换的索引标记为deleted,然后再创建新的文档替换掉需要被替换的。optimize就是执行此操作。所以在优化的时候,你的索引会增大,然后再减小。optimize操作会创建一个全新的的索引结构,所以,你需要预备出2倍于你commit时索引大小的空间。

 


推荐阅读
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 如何优化MySQL数据库性能以提升查询效率和系统稳定性 ... [详细]
  • Git核心命令全解析:掌握日常开发必备技能
    本文深入解析了 Git 的核心命令,帮助开发者掌握日常开发中的必备技能。从 `git init` 命令开始,介绍了如何将当前目录转变为 Git 可管理的仓库。接着详细讲解了 `git add` 命令的使用方法,包括如何将文件(如 `readme.txt`)添加到暂存区,以便在后续提交时进行版本控制。此外,还探讨了其他关键命令,如 `git commit` 和 `git push`,以确保代码变更能够安全地保存和同步到远程仓库。通过这些命令的综合应用,开发者可以更加高效地管理和协作项目。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 本文深入解析了Elasticsearch写入与查询的底层机制。在数据写入过程中,首先会将数据暂存至内存缓冲区,在此阶段数据尚不可被搜索。同时,为了保证数据的持久性和可靠性,系统会将这些数据同步记录到事务日志(translog)中。当内存缓冲区接近满载时,系统会触发刷新操作,将缓冲区中的数据写入到磁盘上的段文件中,从而使其可被搜索。此外,文章还探讨了查询过程中涉及的索引分片、倒排索引等关键技术,为读者提供了全面的技术理解。 ... [详细]
  • 揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节
    揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 如何在MySQL中选择合适的表空间以优化性能和管理效率
    在MySQL中,合理选择表空间对于提升表的管理和访问性能至关重要。表空间作为MySQL中用于组织和管理数据的一种机制,能够显著影响数据库的运行效率和维护便利性。通过科学地配置和使用表空间,可以优化存储结构,提高查询速度,简化数据管理流程,从而全面提升系统的整体性能。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 在C#中开发MP3播放器时,我正在考虑如何高效存储元数据以便快速检索。选择合适的数据结构,如字典或数组,对于优化性能至关重要。字典能够提供快速的键值对查找,而数组则在连续存储和遍历方面表现优异。根据具体需求,合理选择数据结构将显著提升应用的响应速度和用户体验。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
author-avatar
雨的到来2009
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有