设为首页 收藏本站
查看: 883|回复: 0

[经验分享] solr 利用cul或solr界面单值更新

[复制链接]

尚未签到

发表于 2017-12-19 06:15:11 | 显示全部楼层 |阅读模式
  本文主要是指利用solr界面或cul的更新solr的值。如果需要代码中单值更新请参考黎明露珠的博客链接:http://www.cnblogs.com/limingluzhu/p/5535314.html,我在文章的最末也给出了代码单值更新的示例。
  在实际的研发过程中,为方便测试往往需要更改solr字段值,但是除了依赖程序的更新solr本身界面是否支持我们进行solr字段的值更新呢 ,答案是肯定支持的 。
  详细方法请参考连接:http://yonik.com/solr/atomic-updates/
  实际就是我们solr   query的documents:
  其示例documents 修改值方法如下 :
  

    {  "ADDRESSID": "89fe3cffd70311e681c8fa163ea75434",
  "MEMBERTYPE": {
  "
set": "1"  }
  }
  

  我这的 示例是json类型的,但是原理都一样的 。
  这里的commit,可以理解为一个拼装起来的 get请求.当然你也可以用curl来直接请求。具体示例便是下文的curl请求。
  关于具体语法问题原文如下:
  Solr supports several modifiers that atomically update values of a document.


  • set – set or replace a particular value, or remove the value if null is specified as the new value
  • add – adds an additional value to a list
  • remove – removes a value (or a list of values) from a list
  • removeregex – removes from a list that match the given Java regular expression
  • inc – increments a numeric value by a specific amount (use a negative value to decrement)
  具体示例原文如下:

Update Modifier Example
  First, let’s add a document representing a book:
  

$ curl http://localhost:8983/solr/demo/update -d '  
[
  {"id" : "book1",
  "title_t" : "Snow Crash",    // text field
  "copies_i" : 5,
  "cat_ss" : "Science Fiction" // multi-valued string field
  }
  
]
'  

  Now we can update that document, adding the author field, incrementing the number of copies we have, and adding an additional category:
  

$ curl http://localhost:8983/solr/demo/update -d '  
[
  {"id"         : "book1",
  "author_s"   : {"set":"Neal Stephenson"},
  "copies_i"   : {"inc":3},
  "cat_ss"     : {"add":"Cyberpunk"}
  }
  
]
'  

  Now if we retrieve the document using real-time get, we will see the updated fields:
  

$ curl http://localhost:8983/solr/demo/get?id=book1  

{
  "doc": {
    "id":"book1",
    "title_t":["Snow Crash"],
    "copies_i":8,
    "cat_ss":["Science Fiction", "Cyberpunk"],
    "author_s":"Neal Stephenson",
    "_version_":1408729977723027456}}  And finally, remove “Cyberpunk” from the cat field:
  

$ curl http://localhost:8983/solr/demo/update -d '  
[
  {"id"       : "book1",
  "cat"      : {"remove":"Cyberpunk"}
  }
  
]
'  


Atomic Updates with SolrJ
  Here is an example of how to do a partial update via Solr’s Java client, SolrJ:
  

// create the SolrJ client  
HttpSolrClient client
= new HttpSolrClient("http://localhost:8983/solr");  

// create the document  
SolrInputDocument sdoc
= new SolrInputDocument();  
sdoc.addField("id","book1");
  
Map
<String,Object> fieldModifier = new HashMap<>(1);  
fieldModifier.put("
add","Cyberpunk");  
sdoc.addField("cat", fieldModifier);  
// add the map as the field value  
client.
add( sdoc );  // send it to the solr server  
client.
close();  // shutdown client before we exit  


solr代码单值更新示例:  

CloudSolrClient server = new CloudSolrClient(ZkHost);  server.setParser(new XMLResponseParser());
  SolrInputDocument doc
= new SolrInputDocument();  Map
<String, String> partialUpdate = new HashMap<String, String>();  partialUpdate.put("
set", memberType);  doc.addField("ADDRESSID", addressId);
//主键  doc.addField("MEMBERTYPE", partialUpdate);
  doc.addField("LATESTUSETIME", DateUtils.getNow());
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-425556-1-1.html 上篇帖子: Solr Cloud的搭建使用 下篇帖子: solr 的安装和配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表