文档操作API

创建文档

URI: http://server/sf1r/documents/create

根据输入的参数创建一个文档,必须指定DOCID,无返回结果。

  • 输入参数:
  • collection(字符串类型):collection名字
  • resource(对象类型):创建文档内容,为一系列属性名和属性值的键值对:
    • property(字符串类型):属性
    • value(参数类型由属性名确定):属性的值
  • JSON请求的例子:
{
  "collection":"example",
  "resource":{
    "DOCID":"post.1",
    "Title":"Hello,World",
    "Content":"This is a test post."
  }
}

Note

如果SF1配置为实时索引模式,那么调用一次该操作后,将根据文档的Schema配置建立实时索引(倒排索引),如果没有配置实时索引模式,那么文档累积到一定程度后会建立索引,该值可配置。该API为异步模式,故无返回。

删除文档

URI: http://server/sf1r/documents/destory

删除一个文档。无返回结果

  • 输入参数
  • collection(字符串类型):collection名字
  • resource(字符串类型):对文档的描述
    • DOCID(字符串类型):删除DOCID对应的文档
  • JSON请求的例子:
{
  "resource":{
    "DOCID":"post.1",
  }
}

更新文档

URI: http://server/sf1r/documents/update

更新一个文档,必须指定DOCID。无返回结果。

  • 输入参数:
  • collection(字符串类型):collection名字
    • resource(对象类型):对文档的描述
      • property(字符串类型):文档的属性
      • value(any):属性的值
  • JSON请求的例子:
{
  "resource":{
    "DOCID":"post.1",
    "title":"Hello,World (revision)",
    "content":"This is a revised test post."
  }
}

Note

如果SF1配置为实时索引模式,那么调用一次该操作后,将根据文档的Schema配置建立实时索引(倒排索引),如果没有配置实时索引模式,那么文档累积到一定程度后会建立索引,该值可配置。该API为异步模式,故无返回。更新文档相当于删除旧文档和添加新文档两个操作的组合。

原地更新文档

URI: http://server/sf1r/documents/update_inplace

原地更新一个文档而无需传递文档的原始内容。该操作常用于更新频繁的字段,例如计数器。该字段必须在Schema中配置为RType字段,既数值类型+filter,属性值为空则无法更新。无返回结果

  • 输入参数:
  • collection(字符串类型):collection名字
  • resource(对象类型):对文档的描述
  • DOCID(字符串类型):文档的DOCID
  • update(数组类型):更新的内容
    • op(字符串类型):更改操作,目前只支持add
    • property(字符串类型):更改的属性,只能为数值型的属性,且可作为过滤器。
    • opvalue(字符串类型):改变的值
  • JSON请求的例子:
{
  "resource":{
    "DOCID":"post.1",
    "update":[
    {"op":"add","property":"price","opvalue":"10},
    {"op":"add","property":"count","opvalue":"2"}
    ]
  }
}

获取文档

URI: http://server/sf1r/documents/get

根据用户输入条件获取文档。

  • 输入参数
  • collection(字符串类型):collection名字
  • select(数组类型): 选择输出的文档属性,如果为空则输出全部属性
  • conditions(数组类型):根据条件筛选结果 ,但是operator只能为=或in,property只能为_id或DOCID或其他可作为过滤器的属性,当property为uuid(b5mo)或DOCID(b5mp)时,id_type可以选择isbn和url,当id_type为isbn,value为书籍的isbn号时,可以获得该书籍的doc文档,当id_type为url时,value为商品的url时,可以获得该商品的doc文档
  • 输出参数
  • resources(数组类型):满足条件的文档
    • property(字符串类型):属性
    • value(数据类型由属性确定):属性对应的值
    • total_count(非负整数类型):满足条件文档的数量
  • JSON请求的例子:
{
  "collection": "example",
  "conditions": [
    {"property": "DOCID", "operator": "=", "value": "post.1",id_type="isbn"}
  ],
  "select": [
    { "property": "Title" },
    { "property": "Content"}
  ]
}
  • JSON返回的结果:
{
  "header": {"success": true},
  "resources":
  [
    {
      "Content":"This is a test post.",
      "Title":"hello,world",
      "_id":1
    }
  ],
  "total_count":1
}

Note

DOCID是文档的主键,其对应内部属性为_id,因此根据这2个属性获取文档,都是主键查询; 如果conditions里的property填写的是其他字段,查询速度则慢于根据主键查询的速度。

获取文档数量

URI: http://server/sf1r/documents/get_doc_count

获取collection中已建立索引的文档数量。

  • 输入参数:
  • collection(字符串类型):collectin名字
  • 输出参数:
  • count(非负整数类型):被索引文档的数量
  • JSON请求的例子:
{
  "collection":"example"
}
  • JSON返回的结果:
{
  "header": {"success": true},
  "count":1
}