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部分。