索引位置和格式

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