Solr新特性【4.x,5.x,6.x,7.x】
一.Solr4.x新特性
1.近实时搜索
Solr的近实时搜索【Near Real-Time,NRT】功能实现了文档添加到搜索的快速进行,以应对搜索快速变化的数据。
2.原子更新与乐观并发
原子更新功能允许客户端应用对已有文档上进行添加、更新、删除和对字段增值等操作,而且无需重新发送整个文档。当存在两个请求同时更改同一个文档时,Solr使用乐观机制防止不兼容的更新。简单来说就是Solr使用特殊的_version_版本字段来确保文档的安全更新语义。两个请求中后提交更改的请求将会获得一个过时的版本【这个版本是两请求都未执行之前的版本,然后先提交的请求会执行并修改版本号】,所以会执行失败【请求执行之前需要先确认版本,只有版本一致才可以执行请求】。
3.实时GET功能
无论文档是否已经提交到索引,使用实时GET功能都可以使用唯一标识符检索最新版本的索引【事务日志提供支撑】。这与使用行键【row key】检索数据的Cassandra的键-值存储方式类似。在Solr4之前,除非文档提交到Lucene的索引,否则是检索不出来的。且提交很花费时间,影响查询性能。
4.使用事务日志实现写持续性
当文档发送到Solr进行索引时,会被写到事务日志中,以防止服务器发生故障造成数据丢失。Solr的事务日志处在客户端应用与Lucene索引之间,对实时GET功能提供必要的支持,使其可以不考虑文档是否已经提交到Lucene,直接通过唯一标识符进行检索文档。Solr的事务日志解除了更新可见性与更新持久性之间的绑定。也就是说,文档可以持久存储,但不出现在搜索结果中。事务日志可以控制提交的文档在搜索结果中出现的时机,避免在提交之前因服务器出现故障而导致数据丢失。
5.使用Zookeeper实现简易分片和复制
在Solr4.x之前,需手动进行扩容。在Solr4.x之后,SolrCloud让扩容变得简单和自动化。在Solr中,Zookeeper负责指定分片代表与分片副本,并对服务请求可用的服务器机芯跟踪。SolrCloud与Zookeeper是绑定的,因此SolrCloud的启动无需做任何额外的配置和安装。
6.在以前的版本中,Solr主目录有配置文件solr.xml进行配置。从Solr4.4之后,内核可以被自动发现,不再需要在solr.xml中进行配置。
二.Solr5.x新特性
1.schema文件改名为managed-schema。
2.Solr4.x中的deprecated被去掉。
3.从Solr5开始,Solr不再以war
的形式发布,Solr已然成为了一个独立的Java服务端应用,已经包括了start
和stop
脚本,并支持Unix和Windows平台。
4.solr.xml中的单位从cores变为solrcloud。
5.在Solr5.x中引入的Streaming表达式允许查询Solr并将结果作为数据流进行排序和聚合。
三.Solr6.x新特性
1.对Solr5.x中引入的Streaming表达式增加几种新的表达式类型:
>使用类似MapReduce的并行表达式来加快high-cardinality字段的吞吐量。
>守护程序表达式以支持持续推送或拉取流。
>高级并行关系代数,如分布式连接、交集、联合和补充。
>发布/订阅消息。
>用于从其他系统中提取数据并与Solr索引中的文档连接的JDBC连接。
2.并行SQL接口
构建在Streaming表达式的基础上,Solr6.x中的新增功能是一个并行SQL接口,可以将SQL查询发送到Solr。SQL语句被即时编译为Streaming表达式,提供可用于Streaming表达式请求的全部聚合。包含一个JDBC驱动程序,它允许使用SQL客户端和数据库可视化工具查询Solr索引并将数据导入到其它系统中。
3.跨数据中心复制
使用主动-被动模型,SolrCloud集群可以被复制到另一个数据中心,并用一个新的API进行监控。
4.QueryParse图
一个新的图形查询解释器可以使Solr文档建模的定向【循环】图的遍历查询成为可能。
5.DocValues
在Solr示例配置集中的大多数非文本字段类型现在默认为使用DocValues。
6.需要使用Java8
Solr6.x【SolrJ客户端】的Java最低支持的版本是Java8。
7.索引格式更改
Solr6.x不支持读取Lucene/Solr4.x以及更早版本的索引。如果索引中仍存在旧的4.x格式的字段,必须运行Solr5.x附带的Lucene IndexUpgrader。另外,使用Solr5.x充分优化索引,以确保只包含一个最新的索引段。
8.默认为托管模式
当solrconfig.xml没有明确定义<schemaFactory/>时,Solr的默认行为依赖于solrconfig.xml定义的luceneMatchVersion。当luceneMatchVersion<6.0时,ClassicIndexSchemaFactory将继续用于向后兼容,否则将使用ManagedIndexSchemaFactory实例。这种变化最显著的影响是现有的solrconfig.xml文件内容被修改为luceneMatchVersion>=6.0,但没有明确配置ClassicIndexSchemaFactory,并将schema.xml文件自动升级为managed-schema文件。并且将默认启动通过Schema API进行的模式修改。
9.默认的相似性改变
当Schema没有明确地定义全局<similarity/>时,Solr的默认行为将依赖于solrconfig.xml中指定的luceneMatchVersion。当luceneMatchVersion<6.0时,将使用ClassicSimilarityFactory实例,否则将使用SchemaSimilarityFactory实例。可以在SchemaSimilarityFactory声明中指定defaultSimFromFiledType init选项来更改此行为。.值得注意的是,这种改变意味着用户可以利用每个字段类型的相似性声明,并且需要明确声明SchemaSimilaryFactory的全局用法。
10.副本和碎片删除命令更改
DELETESHARD和DELETEREPLICA修改为默认删除任何复制副本的实例目录、数据目录和索引目录。
11.删除facet.date.*参数
Solr3.x中被废弃的facet.date参数【以及相关facet.date.*参数】已被完全删除。
四.Solr7.x新特性
1.复制模式
直到Solr7.x,SolrCloud模型允许任何复制副本在领导者丢失时成为领导者。这对大多数用户来说非常有效,在集群出现问题的情况下提供可靠的故障切换。但是,由于所有副本必须在任何时候都保持同步,因此在大型集群中需要付出代价【副本本身就需要保持同步】。为了提供更多的灵活性,已经添加两种新类型的副本,TLOG&PULL。这些新类型提供了一些选项,以便仅通过从前导项复制索引段与引线同步副本。TLOG类型还有一个额外的好处,就是其维护一个事务日志【名字叫tlog】,如果需要的话,它可以恢复并成为领导者。PULL类型不维护事务日志,因此不能成为领导者。作为这种改变的一部分,传统的副本现在被命名为NRT。如果没有明确定义TLOG或PULL副本,则Solr默认创建NRT副本。
2.自动缩放
Solr自动缩放是Solr中的一个新功能套件,用于管理SolrCloud集群更加简单和自动化。Solr自动缩放的核心是为用户提供一个规则语法来定义在集群中分发节点和碎片的首选项和策略,目的是在集群中保持平衡。从Solr7.x开始,Solr将在确定创建或移动各种Collection API命令的新碎片或副本放置到何处时考虑策略和首选项规则。
3.新的默认配置集
data_driven_configset与basic_configset已被删除,取而代之的是_defaultconfigset。sample_techproducts_configset还被保留了下来,专门与example/exampledocs目录中的Solr附带的示例文档一起使用。当创建一个新的collection时,如果不指定configSet,默认_default将被使用。如果使用SolrCloud,_defaultconfigSet会自动上传到zookeeper。如果使用单独模式,instanceDir将会自动创建,使用_defaultconfigSet作为基础。
Solr7.x之前的版本【以6.6版本为例】:
Solr7.x版本:
4.无模式的改进
默认情况下,传入的字段将被索引为text_general【可以修改】。该字段的名称将与文档中定义的字段名称相同。复制字段规则将被插入到模式中,以将新的text_general字段复制到具有名称的新字段。这个字段的类型是一个strings字段【允许多值】。默认文本字段的前256【可以修改】个字符将被插入到新的字符串字段中。
由于复制字段规则会降低索引的速度并增加索引大小,所以建议只在需要时使用复制字段。如果不需要对字段进行排序或分面,则应该删除自动生成的复制字段规则。可以禁用update.autoCreateFields属性禁用自动字段创建。使用命令修改配置:curl http://host:8983/solr/mycollection/config -d '{"set-user-property":{"update.autoCreateFields":"false"}}'。
5.对默认行为的更改
>JSON现在是默认的响应格式。如果依赖XML响应,现在必须在请求中定义:wt=xml。另外,行缩进是默认启用的【indent=on】。
>sow参数【Split on Whitespace】现在默认为false,允许支持多字同义词。该参数与eDismax和standard/lucene查询解析器一起使用。如果此参数没有明确指定为true,查询文本将不会在空白上拆分。
>legacyCloud参数现在默认为false。如果副本的项不存在state.json,则该副本将不会被注册。这可能会影响到复制副本的用户,并自动将其注册为分片的一部分。通过使用一下命令在集群属性中设置属性legacyCloud=true,可以退回到旧的行为。命令如下:./sever/scripts/cloud-scripts/zkcli.sh -zkhost 127.0.0.1:2181 -cmd clusterprop -name legacyCloud -val true。
>如果solrconfig中的luceneMatchVersion是7.0.0或以上版本则eDismax查询分析器参数lowercaseOperator默认为false。luceneMatchVersion低于7.0.0的行为是不变的【true】。这意味着客户端必须以大写的方式发送布尔运算符【AND/OR/NOT】才能被识别,或者必须明确设置该参数为true。
>如果luceneMatchVersion是7.0.0或以上版本,则solrconfig中的handleSelect参数默认为false。这会导致Solr忽略qt参数,如果它存在于请求中,请求处理程序没有前导'/',则可以设置handleSelect="true"或者考虑迁移配置。该qt参数仍用作指定要使用的请求处理程序的Solr特殊参数。
>lucenePlusSort查询解析器【旧的lucene查询解析器】已被弃用,不再隐式定义。若想继续使用这个解析器直到Solr8【该版本将删除这个解析器】,必须将它注册到solrconfig.xml中。如下:<queryParse name="lucenePlusSort" class="solr.OldLuceneQParserPlugin"/>。
>TemplateUpdateRequestProcessorFactory名称从Template更改为template,AtomicUpdateProcessorFactory的名称从Atomic改为atomic,此外,TemplateUpdateRequestProcessorFactory现在使用{}而不是${}作为模板。
五.备注
1.对于Solr升级,将数据重新编入索引被认为是最佳做法。如果重新索引不可行,请注意,Solr一次只能升级一个大版本【例如从6.x升级到7.x】。因此,Solr6.x索引与Solr7.x兼容,但Solr5.x索引则不会。
Solr新特性【4.x,5.x,6.x,7.x】的更多相关文章
- 详细介绍Spring Boot 2.0的那些新特性与增强
以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持. 内嵌容器包结构调整 为了支持reactive使用场景,内嵌的容器包结构被重构了 ...
- SQL Server 2014 新特性——内存数据库
SQL Server 2014 新特性——内存数据库 目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 ...
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...
- [干货来袭]C#6.0新特性
微软昨天发布了新的VS 2015 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下也是昨天发布的新的C#6.0的部分新特性吧.. ...
- CSS3新特性应用之结构与布局
一.自适应内部元素 利用width的新特性min-content实现 width新特性值介绍: fill-available,自动填充盒子模型中剩余的宽度,包含margin.padding.borde ...
- 【译】Meteor 新手教程:在排行榜上添加新特性
原文:http://danneu.com/posts/6-meteor-tutorial-for-fellow-noobs-adding-features-to-the-leaderboard-dem ...
- 跨平台的 .NET 运行环境 Mono 3.2 新特性
Mono 3.2 发布了,对 Mono 3.0 和 2.10 版本的支持不再继续,而且这两个分支也不再提供 bug 修复更新. Mono 3.2 主要新特性: LLVM 更新到 3.2 版本,带来更多 ...
- Atitit opencv版本新特性attilax总结
Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...
- es6 新特性2
es6其他几个非常有用的新特性. import export 这两个家伙对应的就是es6自己的module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成 ...
随机推荐
- ESA2GJK1DH1K升级篇: 远程升级准备工作: 安装Web服务器
前言 大家可以安装Apache,Tomcat,nginx 等Web服务器软件,这篇文章安装 OpenResty 作为Web服务器软件,该软件安装在云端电脑,如果想 安装到自己本地电脑实现该功能,可使用 ...
- [BZOJ1015/JSOI2008]星球大战
// 此博文为迁移而来,写于2015年7月16日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6le.html 1.题 ...
- 【BigData】Java基础_HashMap
HashMap简介 HashMap是一种非常常见.方便和有用的集合,是一种键值对(K-V)形式的存储结构 常见的方法如下: put:将数据添加到集合中 get:获取集合中的元素 size:获取集合的长 ...
- 【视频开发】【计算机视觉】相机标定(Camera calibration)原理、步骤
相机标定(Camera calibration)原理.步骤 author@jason_ql(lql0716) http://blog.csdn.net/lql0716 在图像测量过程以及机器视觉应用 ...
- vux scroller在iOS13上,一停止滑动就跳到顶部
转载:https://blog.csdn.net/sllailcp/article/details/102502452 今天客户反馈的问题,说在最新版的iOS上(iOS13),滑动列表,滑完就会跳到顶 ...
- hive 批量添加,删除分区
一.批量添加分区: use bigdata; alter table siebel_member add if not exists partition(dt='20180401') locati ...
- Pycharm 个人认为舒服漂亮又好用的主题风格
又开始和code打交道了系列…… 实验室换了新电脑,故而,重新安装了各种软件,乃至重新配置 Pycharm主题,找了好久,终于找到,想着应该mark一下,以备下次需要. 个人认为 Monokai 这 ...
- Java注解及其原理以及分析spring注解解析源码
注解的定义 注解是那些插入到源代码中,使用其他工具可以对其进行处理的标签. 注解不会改变程序的编译方式:Java编译器对于包含注解和不包含注解的代码会生成相同的虚拟机指令. 在Java中,注解是被当做 ...
- servlet和response
servlet基础知识 Servlet在内存中是单例----单实例对象一个Servlet类 在内存中最多有一个对象 一个项目有多少功能,将来就有多少Servlet. servlet是自启动的,就是可以 ...
- C++引用与常量
常量: 在C++中有许多种数据类型(如int,float,bool等等).而这些数据类型又可以声明定义出变量与常量两种不同的具体数据.它们两种分类的标准是不一样的,是两个角度可以叠加的分类,举个栗子: ...