Cloudant 通过 curl 添加 lucene 索引

Cloudant add lucene index via curl

所以创建了一个索引函数并对其进行了测试,它应该被集成到数据库初始化步骤中。 我目前有以下内容:

indexRequest.json

{
"indexes": {
    "mySearch": {
      "index": "function (doc) {
        index('default', doc.name);
        if (doc.description) {
          index('default', doc.description);
        }
      }"
    }
  }
}

现在我正尝试通过以下方式将此文件发送到 cloudant:

curl -X PUT https://$username:$password@$myurl.cloudant.com/myDatabase/_design/myTest  -H 'Content-Type: application/json' -d @indexRequest.json

失败

{"error":"conflict","reason":"Document update conflict."}

myTest 已经包含一个索引函数,但名称不同。 我在这里做错了什么?

在 Cloudant 中更新或删除文档时,您必须为新文档 body 提供先前版本的 _rev 令牌。程序是

1) 阅读现有文档

curl -X PUT https://$username:$password@$myurl.cloudant.com/myDatabase/_design/myTest

这将为您提供现有的 body。将 body 修改为您的规范。然后

2) 写回文件

curl -X PUT https://$username:$password@$myurl.cloudant.com/myDatabase/_design/myTest  -H 'Content-Type: application/json' -d @indexRequest.json

原始 _id 和 _rev 在 json 文件中。

然后您应该会收到确认信息:

{
    "ok":true,
    "id":"_design/myTest",
    "rev":"2-9176459034"
}

这是 Cloudant Docs on updating documents and a more detailed write-up on Design Document management