solr的更新,目前网上基本流传了两个版本,一个是通过solrj来实现的,一个是通过自己写HttpClient来写的。
solrj来进行原子更新
主要分为如下几种:
set
add
remove
removeregex
inc
set设置或者替换掉指定的值,如果是null,或者是个空的集合,将会删除掉原来的值
add对于指定的字段增加一个值
remove删除掉指定字段的值
removeregex从多值字段中删除掉符合规则的值
inc以指定的值进行增加
[img]http://dl2.iteye.com/upload/attachment/0115/8353/0148921d-3bd7-3a63-8544-2daf26615ef0.png[/img]
第一个字段是索引非存储的字段,下面的几个都是既是索引字段又是存储字段,
进过测试,对于我当前的版本5.3.1是不存在网上说的那个问题(那个是根据lucene的原理来理解的,即如果不是存储字段,会导致数据丢失,因为lucene的更新本质是先删除,在重新创建)
[img]http://dl2.iteye.com/upload/attachment/0115/8355/12f0ff69-8129-3a71-9bac-33168e4b326f.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0115/8357/d7fb4416-e3cb-35d9-814c-dcf0fabd14ed.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0115/8359/64b6161f-28e7-3a5e-90ba-7107a93f3181.png[/img]
solrj来进行原子更新
主要分为如下几种:
set
add
remove
removeregex
inc
set设置或者替换掉指定的值,如果是null,或者是个空的集合,将会删除掉原来的值
add对于指定的字段增加一个值
remove删除掉指定字段的值
removeregex从多值字段中删除掉符合规则的值
inc以指定的值进行增加
[img]http://dl2.iteye.com/upload/attachment/0115/8353/0148921d-3bd7-3a63-8544-2daf26615ef0.png[/img]
第一个字段是索引非存储的字段,下面的几个都是既是索引字段又是存储字段,
进过测试,对于我当前的版本5.3.1是不存在网上说的那个问题(那个是根据lucene的原理来理解的,即如果不是存储字段,会导致数据丢失,因为lucene的更新本质是先删除,在重新创建)
[img]http://dl2.iteye.com/upload/attachment/0115/8355/12f0ff69-8129-3a71-9bac-33168e4b326f.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0115/8357/d7fb4416-e3cb-35d9-814c-dcf0fabd14ed.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0115/8359/64b6161f-28e7-3a5e-90ba-7107a93f3181.png[/img]