solr cloud 更新 solrconfig 配置_Solr各版本新特性「4.x,5.x,6.x,7.x」

c1260cba3ca437f4a75878281af937a4.png

一.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没有明确定义时,Solr的默认行为依赖于solrconfig.xml定义的luceneMatchVersion。当luceneMatchVersion<6.0时,ClassicIndexSchemaFactory将继续用于向后兼容,否则将使用ManagedIndexSchemaFactory实例。这种变化最显著的影响是现有的solrconfig.xml文件内容被修改为luceneMatchVersion>=6.0,但没有明确配置ClassicIndexSchemaFactory,并将schema.xml文件自动升级为managed-schema文件。并且将默认启动通过Schema API进行的模式修改。

  9.默认的相似性改变

  当Schema没有明确地定义全局时,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版本为例】:

5af0e9501269b6ca0ce7cac6857850d7.png

Solr7.x版本:

94c4e80794328de9678bdd381e91be4b.png

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中。如下:。

  >TemplateUpdateRequestProcessorFactory名称从Template更改为template,AtomicUpdateProcessorFactory的名称从Atomic改为atomic,此外,TemplateUpdateRequestProcessorFactory现在使用{}而不是${}作为模板。

五.备注

  1.对于Solr升级,将数据重新编入索引被认为是最佳做法。如果重新索引不可行,请注意,Solr一次只能升级一个大版本【例如从6.x升级到7.x】。因此,Solr6.x索引与Solr7.x兼容,但Solr5.x索引则不会与Solr7.x兼容。

9d6fe8c82bf92e3f30a7531408c9ad8e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

junit数据驱动测试_使用Junit和Easytest进行数据驱动的测试

junit数据驱动测试在本文中&#xff0c;我们将看到如何使用Junit进行数据驱动的测试。 为此&#xff0c;我将使用一个名为EasyTest的库。 我们知道&#xff0c;对于TestNG&#xff0c;它已内置了数据提供程序。 通过简单的测试&#xff0c;我们可以使用Junit进行数据驱动的测试…

HH SaaS电商系统的出库功能模块设计

文章目录出库单业务流程基本流程扩展流程找不到符合条件的仓库&#xff0c;要求部分退款&#xff08;未生成出库单时&#xff09;找不到符合条件的仓库&#xff0c;全部退款&#xff08;未生成出库单时&#xff09;找不到符合条件的仓库&#xff0c;等待库存补足&#xff08;未…

java 拼图_拼图项目的诅咒:为什么Java 9一遍又一遍地延迟?

java 拼图JDK 9发行日期推迟到2017年7月 距JDK 9发行不到200天&#xff0c;它又被推迟了 。 新的发布日期已更新为2017年7月&#xff0c;比之前推迟的日期晚了四个月。 推迟日期 9月13日&#xff0c;Oracle Java平台小组的首席架构师Mark Reinhold发表了他的建议&#xff0c;…

mysql数据库增删改查关键字_mysql数据库的增删改查

数据库基本操作&#xff1a;增删改查#DML语言/*数据操作语言&#xff1a;插入&#xff1a;insert修改&#xff1a;update删除&#xff1a;delete*/1.增插入语句的方式一表已经存在啦&#xff0c;我们需要往里面插入数据/*语法&#xff1a;insert into 表名(列名,…) values(值1…

HH SaaS电商系统的采购功能模块设计

文章目录如何生成采购单系统生成采购单的流程基本流程扩展流程找不到符合条件的供应商&#xff0c;要求部分退款&#xff08;初次生成采购单时&#xff09;找不到符合条件的供应商&#xff0c;要求全部退款&#xff08;初次生成采购单时&#xff09;指定供应商的库存不足&#…

HH SaaS电商系统的入库功能模块设计

文章目录创建入库单的场景创建入库单的业务流程商品直接入库内部仓退货入库&#xff08;内部仓&#xff09;换货入库&#xff08;内部仓&#xff09;退货入库&#xff08;外部仓&#xff09;换货入库&#xff08;外部仓&#xff09;备货入库&#xff08;内部仓&#xff09;备货…

接口方法javadoc注释_继承Javadoc方法注释

接口方法javadoc注释尽管用于javadoc工具的JDK工具和实用程序页面通过实现和继承方法来描述Javadoc方法注释重用的规则&#xff0c;但是当实际上不需要使用{inheritDoc}时&#xff0c;很容易不必要地显式描述注释继承&#xff0c;因为会使用相同的注释隐式继承。 Java 8 javado…

redis java 监听_从零手写实现redis(四)添加监听器

前言java从零手写实现redis&#xff08;一&#xff09;如何实现固定大小的缓存&#xff1f;java从零手写实现redis&#xff08;三&#xff09;redis expire 过期原理java从零手写实现redis&#xff08;三&#xff09;内存数据如何重启不丢失&#xff1f;本节&#xff0c;让我们…

drill apache_如何指南:Apache Drill入门

drill apacheApache Drill是一个引擎&#xff0c;可以连接到许多不同的数据源&#xff0c;并为它们提供SQL接口。 它不仅是遍历任何复杂事物SQL界面&#xff0c;而且是功能强大的界面&#xff0c; 其中包括对许多内置函数和窗口函数的支持。 尽管它可以连接到可以使用SQL进行查…

mac mysql 重设密码_Mac下忘记mysql密码重新设置密码的图文教程

MySQL 文件在路径/usr/local/mysql下1&#xff0c; 在系统偏好设置中关闭 mysql &#xff1a; Stop MySQL Server2 &#xff0c;打开终端进入路径  /usr/local/mysql/bin输入命令 sudo su&#xff0c; 然后输入开机密码。然后输入命令&#xff1a;./mysqld_safe –skip-grant-…

activiti 变量_如何在Activiti中使用瞬态变量

activiti 变量我们昨天发布的Activiti v6 Beta3中已经加入了很多需要的功能-临时变量。 在这篇文章中&#xff0c;我将向您展示一个示例&#xff0c;说明如何使用瞬态变量来覆盖一些以前不可能&#xff08;或最佳&#xff09;的高级用例。 到目前为止&#xff0c;Activiti中的…

erosa mysql_MySQL协议和canal实现

前言前面的文章里&#xff0c;我们了解到 canal 可以从 MySQL 中感知数据的变化。这是因为它模拟 MySQL slave 的交互协议&#xff0c;伪装自己为 MySQL slave &#xff0c;从而实现了主从复制。正是了解到这一点&#xff0c;笔者有两个问题便一直萦绕于心&#xff1a;它是如何…

HH SaaS电商系统的供应商系统设计

供应商信息结构图 供应商类型 商城的供应商划分为专享型、共享型两种&#xff0c;但是租户和店铺供应商则都是“专享型”的。 共享型供应商发布的商品归属供应商自己的&#xff0c;商品档案供应商才有资格管理&#xff0c;所以spu_base需要保存供应商id&#xff0c;有供应商id…

aws faas_带有AWS Lambda和Java的无服务器FaaS

aws faas什么是无服务器架构&#xff1f; 无服务器架构在由第三方完全管理的临时容器中运行自定义代码。 自定义代码通常只是完整应用程序的一小部分。 也称为函数 。 这为无服务器架构提供了另一个名称&#xff0c;即功能即服务 &#xff08;FaaS&#xff09;。 该容器是短暂的…

跨境商品的进口税额显示

跨境商品的采购类型有三种&#xff1a;直邮、保税、一般贸易&#xff0c;而一般贸易的商品已经清关入境了&#xff0c;虽然是跨境商品&#xff0c;但是无需再清关&#xff0c;所以商品详情页无需显示进口税相关信息。 直邮跨境商品显示的进口税信息如下图所示&#xff1a; 保税…

coreldraw x8段落_CDR X8设置自定义文字为默认字体(二)

通过上一篇文章的介绍&#xff0c;我们已经了解到了在CorelDRAW中如何自定义设置默认字体&#xff0c;相关阅读可参阅&#xff1a;CDR X8设置文字为默认字体。其实在CorelDRAW软件中给用户提供方式不止是一种&#xff0c;本文将介绍更多关于设置默认字体的方法。1. 打开CorelDR…

jhipster_JHipster入门,第3部分

jhipster欢迎回到本JHipster教程系列&#xff01; 在第一部分中&#xff0c;我们介绍了如何创建整体应用程序。 在第二部分中 &#xff0c;我们逐步创建了一个微服务应用程序&#xff08;这有点复杂&#xff09;。 对于那些正在努力使JHipster正常运转的人&#xff0c;我想着重…

jhipster_JHipster入门,第2部分

jhipster所以你回来了&#xff01; 在本系列的最后一部分中 &#xff0c;我们采用了单片路线创建了一个JHipster应用程序。 这是红色药丸路线&#xff1b; 生活几乎与您习惯的一样。 但是也许您喜欢挑战。 也许您想超越红色药丸并尝试蓝色药丸。 在这种情况下&#xff0c;Blue…

HH SaaS电商系统的虚拟资金账户(钱包余额)设计

文章目录方案一&#xff0c;将资金账户抽象出来虚拟资金账户余额流水记录实体方案二&#xff0c;用户表直接保存资金余额余额流水记录实体方案一&#xff0c;将资金账户抽象出来 虚拟资金账户 P.S. 如果机构代码和消费代码有区分类型&#xff0c;那么资金账户表中就不必保存“…

jhipster_jHipster入门,第1部分

jhipster因此&#xff0c;您想保持技术的领先地位&#xff0c;但对所有活动部件感到不知所措。 你真幸运&#xff01; 这就是jHipster发光的地方。 如果您喜欢Ruby on Rails或Grails的方法来快速启动和运行应用程序&#xff0c;那么这可能是适合您的选择。 jHipster旨在使设置…