solr索引增加字段的步骤
solr 1.4 索引,增加字段,此字段要求,索引并存储,类型是整形
1.先在scheml.xml中增加字段配置,然后重新启动加载新配置(此时仍是旧的索引,索引文件中实际没有新增索引字段)
此时,检索是没有问题的,但,不能使用新增字段检索。也不会有新增字段显示出来,即便是在配置中写入default。
2.做新的索引,索引文件中实际拥有索引字段,然后把配置文件中新增配置去除,重启。
此时,检索是有问题的,原因是:实际的新字段在写输出时没有配置,因此solr无法输出。
严重: java.lang.NullPointerException
at org.apache.solr.request.XMLWriter.writePrim(XMLWriter.java:761)
也因此,如果你用fl指定输出字段,仅是旧字段,是没有问题的。
3.另外的测试结果:如配置文件中增加字段,并且有default,但实际提交做索引的数据没有新增字段,则搜索的结果有新增字段并且是default值。可见这里的default是仅对做索引有效的。
4.对分布式检索的测试:假设分布式检索有大小两个索引组成。
4.1如果先在大索引solr上添加新增字段,仅配置文件中增加,索引中不增加。小索引solr一切不变。
检索没有问题。
4.2如果再更换大索引solr的索引文件为已经实际添加了新增字段数据的索引文件,而小索引仍一切不变。
检索没有问题。(同样原因,变小索引,不变大索引也没有问题)
----------
基于上面的情况。
和我们的具体情况:(solr master-slaver 结构,并且slaver中使用分布式检索)
我们索引中增加字段的顺序应该是:
1.变更所有slaver机的配置 ,增加字段
2.变更master机的配置,增加字段
3.做master机的索引,增加新增字段数据
4.分发到slaver机器
5.分布式索引,新索引数据先到哪个slaver机没有关系。
-----------------
后发现,solr1.4有分发功能,此分发功能可以同时分发scheml.xml文件,这样就不用辛苦的每个机器去更新了。