学习Solr之前,我想对于初学Solr的小伙伴们来说, Solr的core概念是最令人头疼的,到底该怎么理解Solr中的core呢?以下是我从Solr的官方文档中摘下来的一段文字说明:
In Solr, the term core is used to refer to a single index and associated transaction log and configuration files (including schema.xml and solrconfig.xml, among others). Your Solr installation can have multiple cores if needed, which allows you to index data with different structures in the same server, and maintain more control over how your data is presented to different audiences.
In older versions of Solr, cores had to be defined in solr.xml in order for Solr to know about them. Now, however, Solr supports automatic discovery of cores and they no longer need to be explicitly defined. Instead, core-specific properties (such as the directories to use for the indexes or configuration files, the core name, and other options) are defined in a core.properties file. Any core.properties file in any directory of your Solr installation (or in a directory under where solr_home is defined) will be found by Solr and the defined properties will be used for the core named in the file.
我大致翻译下:
在Solr中,core术语是用来指代一个单独的索引、关联的事务日志以及一些配置文件(包括schema.xml和solrconfig.xml等等),如果你需要的话,在安装solr的时候你可以创建多个core,多core模式允许你在同一台服务器上使用不同的结构来索引你的数据以及在如何把索引数据展现给不同的用户方面提供了更多的控制。
在老版本Solr中,core必须按顺序定义在solr.xml配置文件中,这样Solr才能发现它们,不过现在Solr支持自动发现core,core不再需要显式明确的在solr.xml中定义,替而代之的是,使用core.properties属性文件来指定一些core属性,如:索引目录,配置文件,core名称以及其他可选项。Solr会自动在solr安装目录下发现core.properties文件(或者是solr_home目录下),core.properties配置文件中定义的参数是用来创建core的。
Core拥有自己独立的索引以及事务日志,每个core拥有自己独立的core目录,拥有自己独立的core访问URL即http://ip:port/solr/coreName,这里的coreName即你要访问的core名称,这为实现Solr distributed searching(分布式搜索)提供了便利。当然不同core不一定要在不同的服务器上,不同core可以在同一台server上。当然core也为索引数据分类提供了便利,同时也避免了单个索引目录下数据体积过大的问题。
下面来具体说说core.properties的配置:
name: core的名称,必填参数
config: 用于指定solrconfig.xml配置文件的文件名,默认值是solrconfig.xml
dataDir: 指定用于存放lucene索引和log日志文件的目录路径,该路径是相对于core根目录(在单core模式下,就直接是相对于solr_home了),默认值是当前core目录下的data
ulogDir:用来配置指定事务日志文件路径的,默认值是当前core目录下的data目录下的tlog
schema: 即用来配置你的schema.xml配置文件的文件名的,schema.xml配置文件必须存放在当前core目录下的conf目录下
shard:用来设置当前core的分片id,可选参数
collection:用来配置当前core属于哪个solrClound collection,这里配置的是该solrClound collection的name值,可选参数
loadOnStartup:表示是否在solr启动部署的时候就加载core并为当前core创建一个新的IndexSearcher实例
transient:用来设置当Solr的transient-cacheSize阀值达到限制值的时候,是否自动卸载当前core.
下面是一个简单的core.properties配置示例:
Solr在启动部署的时候,首先会加载core.properties配置文件,通过core.properties配置来自动发现core,然后根据里面配置的config和schema来加载solrconfig.xml和schema.xml这两个核心配置文件.注意core.properties只是一些core名称、核心配置文件,data数据目录等等这些参数的定义,加载core.properties配置文件时,core并没有开始创建。solrconfig.xml才是关键,里面涉及到solr依赖的lucene版本号,solr依赖的扩展jar包加载地址、lucene索引创建相关参数(比如DirectoryFactory),过滤器缓存,查询结果集缓存,document缓存等等配置。有关solrconfig.xml配置文件的讲解留到下一篇再详细说明,今天就到这儿了,晚安,各位!
如果你还有什么问题请加我Q-Q:7-3-6-0-3-1-3-0-5,
或者加裙一起交流学习!