索引位置和格式

Solr 存储其索引的位置和方式是可配置的选项。

使用 dataDir 参数指定索引数据的位置

默认情况下,Solr 将其索引数据存储在核心实例目录(instanceDir)下的名为 /data 的目录中。如果要指定其他目录来存储索引数据,可以在核心的 core.properties 文件中配置 dataDir,或者在 solrconfig.xml 文件中使用 <dataDir> 参数。您可以使用绝对路径或相对于 SolrCore 的 instanceDir 的路径名指定另一个目录。例如:

<dataDir>/solr/data/${solr.core.name}</dataDir>

${solr.core.name} 替换将导致替换当前核心的名称,这使得每个核心的数据都保存在单独的子目录中。

如果您使用 用户管理索引复制来复制 Solr 索引,则 <dataDir> 目录应与复制配置中使用的索引目录相对应。

如果定义了环境变量 SOLR_DATA_HOME,或者为您的 DirectoryFactory 配置了 solr.data.home,或者 solr.xml 包含元素 <solrDataHome>,则数据目录的位置将为 <SOLR_DATA_HOME>/<instance_name>/data

指定索引的 DirectoryFactory

默认的 solr.NRTCachingDirectoryFactory 基于文件系统,并尝试为当前 JVM 和平台选择最佳实现。您可以通过指定 solr.MMapDirectoryFactorysolr.NIOFSDirectoryFactory 来强制使用特定的实现和/或配置选项。

<directoryFactory name="DirectoryFactory"
                  class="solr.MMapDirectoryFactory">
  <bool name="preload">true</bool>
</directoryFactory>

solr.RAMDirectoryFactory 基于内存,不是持久的,并且不适用于复制。使用此 DirectoryFactory 将您的索引存储在 RAM 中。

<directoryFactory class="org.apache.solr.core.RAMDirectoryFactory"/>

如果您正在使用 Hadoop 并希望将索引存储在 HDFS 中,则应使用 solr.HdfsDirectoryFactory 而不是上述任何实现。有关更多详细信息,请参阅 HDFS 上的 Solr 部分。