zoukankan      html  css  js  c++  java
  • solr 利用cul或solr界面单值更新

    本文主要是指利用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());
  • 相关阅读:
    Centos 6.4 8250/16550 只生成了4个串口
    Warning: Data truncated for column 'AirPress' at row 1
    I.MX6 32G SD卡测试
    oracle创建数据库表空间
    oracle创建表空间
    SpringMvc文件下载
    怎么取消ie浏览器body与html的间隙
    Ztree手风琴效果(第三版)
    判断JS对象是否拥有某属性
    js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
  • 原文地址:https://www.cnblogs.com/lianshan/p/6426140.html
Copyright © 2011-2022 走看看