Solr 6 的主要变更

在开始迁移您的配置和索引之前,需要考虑 Solr 6 中的一些主要变更。

有数百个变更,因此彻底查看Solr 升级说明部分以及 Solr 实例中的 CHANGES.txt 文件将有助于您计划迁移到 Solr 6。本节尝试重点介绍您应该了解的一些主要变更。

Solr 6 新功能亮点

Solr 6 的一些主要改进包括

流式表达式

在 Solr 5 中引入的 流式表达式 允许查询 Solr 并以数据流的形式获取结果,并根据请求进行排序和聚合。

Solr 6 中添加了几种新的表达式类型

  • 使用类似 MapReduce 的混洗的并行表达式,以加快高基数字段的吞吐量。

  • 守护进程表达式,以支持连续的推送或拉取流。

  • 高级并行关系代数,如分布式连接、交集、并集和补集。

  • 发布/订阅消息传递。

  • JDBC 连接,以从其他系统拉取数据并与 Solr 索引中的文档连接。

SQL 查询

基于流式表达式构建,Solr 6 中的新增功能是 SQL 支持,能够向 Solr 发送 SQL 查询。SQL 语句会动态编译为流式表达式,从而提供可用于流式表达式请求的全部聚合范围。其中包含一个 JDBC 驱动程序,允许使用 SQL 客户端和数据库可视化工具来查询您的 Solr 索引并将数据导入到其他系统。

跨数据中心复制

现在可以使用跨数据中心复制在数据中心之间进行复制。使用主动-被动模型,可以将 SolrCloud 集群复制到另一个数据中心,并使用新的 API 进行监控。

Graph QueryParser

新的 graph 查询解析器 使使用 Solr 文档建模的定向(循环)图的图遍历查询成为可能。

DocValues

Solr 示例配置集中的大多数非文本字段类型现在默认使用 DocValues

需要 Java 8

Solr 6(以及 SolrJ 客户端库)支持的最低 Java 版本现在是 Java 8。

索引格式更改

Solr 6 不支持读取 Lucene/Solr 4.x 及更早版本的索引。如果您的索引中可能仍然有旧的 4x 格式的段,请务必运行 Solr 5.5 中包含的 Lucene IndexUpgrader。或者:使用 Solr 5.5 完全优化您的索引,以确保它只包含一个最新的索引段。

托管模式现在是默认设置

solrconfig.xml 没有明确定义 <schemaFactory/> 时,Solr 的默认行为现在取决于 solrconfig.xml 中指定的 luceneMatchVersion。当 luceneMatchVersion < 6.0 时,为了向后兼容,将继续使用 ClassicIndexSchemaFactory,否则将使用 ManagedIndexSchemaFactory 的实例。

此更改最显著的影响是:

  • 修改为使用 luceneMatchVersion >= 6.0 的现有 solrconfig.xml 文件,但没有显式配置 ClassicIndexSchemaFactory 的文件,它们的 schema.xml 文件将被自动升级为 managed-schema 文件。

  • 通过 Schema API 进行的 Schema 修改现在默认启用。

请查看 Schema Factory 配置 部分了解更多详情。

默认相似度更改

当 Schema 没有明确定义全局 <similarity/> 时,Solr 的默认行为现在取决于 solrconfig.xml 中指定的 luceneMatchVersion。当 luceneMatchVersion < 6.0 时,将使用 ClassicSimilarityFactory 的实例,否则将使用 SchemaSimilarityFactory 的实例。最值得注意的是,此更改意味着用户可以利用每个字段类型的相似度声明,而无需显式声明全局使用 SchemaSimilarityFactory

无论它是显式声明的还是用作隐式全局默认值,当字段类型没有声明显式的 <similarity /> 时,SchemaSimilarityFactory 的隐式行为也已更改为取决于 luceneMatchVersion。当 luceneMatchVersion < 6.0 时,将使用 ClassicSimilarity 的实例,否则将使用 BM25Similarity 的实例。可以在 SchemaSimilarityFactory 声明中指定 defaultSimFromFieldType 初始化选项来更改此行为。请查看 SchemaSimilarityFactory 的 Javadoc 以获取更多详细信息。

副本和分片删除命令更改

DELETESHARD 和 DELETEREPLICA 现在默认删除它们删除的任何副本的实例目录、数据目录和索引目录。请查看 Collections API 文档,了解有关新请求参数的详细信息,如果您希望在使用这些命令时保留磁盘上的所有数据,可以使用这些参数来防止此行为。

已删除 facet.date.* 参数

在 Solr 3.x 中已弃用的 facet.date 参数(以及相关的 facet.date.* 参数)已完全删除。如果您尚未切换到使用等效的 facet.range 功能,则必须在升级之前执行此操作。