【问题标题】:Add and update data to Solr-4.3.0 using node module solr-client使用节点模块 solr-client 向 Solr-4.3.0 添加和更新数据
【发布时间】:2013-07-08 07:29:42
【问题描述】:

让我举个例子来解释一下这个场景。假设我将数据索引到 Solr 为:

{
 "id" : "872919092",
 "filename" : "science_book",
 "path" : "/local/abc/"
}

现在我想用id : 872919092 修改已经索引到 Solr 的数据。我需要将filename : science_book 更改为filename : history_book,并将新属性topic : mughal 添加到相同的索引数据中,保持path 不变。我不想再次传递path,因为它没有任何变化并且已经索引到 Solr。根据Solr的文档 这个有可能。我如何使用 nodejs solr-client update 方法做到这一点?我想实现以下场景:

  1. 如果具有特定 id 的 Solr 索引数据中不存在该属性,请将其添加到已索引的数据中,保持先前索引的数据不变。
  2. 如果该属性已存在于具有特定 id 的 Solr 索引数据中,则更改先前索引的属性的值,保持其他索引数据不变。

我将要添加到 Solr 中的数据作为散列传递,该散列仅包含要添加到 Solr 中已索引数据的新属性以及将先前索引数据的值更改到 Solr。

注意:我正在使用 Solr-4.3.0 和节点模块 solr-client 向 Solr 添加数据。

【问题讨论】:

    标签: node.js solr solr4 node-modules


    【解决方案1】:

    您将需要添加设置或添加到字段并删除其余字段。您需要 id 和字段。

    var doc = {
       "id" : "872919092",
       filename : {"set" : "history_book"},
       topic : {"add" : "mughal"}
    }
    
    client.add(doc)
    

    还请注意,您可以使用 inc 或 dec 递增或递减 int

    【讨论】:

    • 只是为了在您的答案中添加一个点,如果以前该字段在 Solr 索引数据中不存在,“set”还会添加新字段。
    • 嗨,我已经完成了上面的代码,它工作正常。但是在添加之后我必须手动提交。要删除它,我设置了autoCommit = true。但它仍然无法正常工作。非常感谢任何帮助。
    • 你可以使用client.commit()。它甚至支持回调。
    猜你喜欢
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2014-06-04
    相关资源
    最近更新 更多