Solr存储索引的位置和方式是可配置的选项。
使用dataDir参数指定索引数据的位置
默认情况下,Solr将其索引数据存储在核心实例目录(instanceDir)下名为/data的目录中。
如果你想为存储索引数据指定不同的目录,可以在核心的core.properties文件中配置dataDir,或在solrconfig.xml文件中使用<dataDir>参数。
你可以用绝对路径或相对于SolrCore的instanceDir的路径名来指定另一个目录。
例如:
1 | <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.MMapDirectoryFactory或solr.NIOFSDirectoryFactory来强制使用特定实现和/或配置选项。
1 | <directoryFactory name="DirectoryFactory" |
solr.RAMDirectoryFactory基于内存,不持久化,不能与复制一起工作。
使用此DirectoryFactory将索引存储在RAM中。
1 | <directoryFactory class="org.apache.solr.core.RAMDirectoryFactory"/> |
注意
如果你使用Hadoop并希望将索引存储在HDFS中,应该使用
solr.HdfsDirectoryFactory而不是上述任何实现。
有关更多详细信息,请参见HDFS上的Solr部分。