现在面向对象编程非常流行,对象作为一个整体存储在NoSQL数据库中,经常以JSON的格式。一个JSON通常也成为文档(document),elasticsearch就是文档(JSON)的形式存储数据的。
文档存储涉及概念
元数据概念.png索引
PUT /{index}/{type}/{id}
{
"field": "value",
...
}
获取
GET /{index}/{type}/{id}?pretty
检查文档存在
curl -i -XHEAD http://localhost:9200/{index}/{type}/{id}
更新
文档在Elasticsearch中是不可变的——我们不能修改他们。
更新整个文档
在内部,Elasticsearch标记旧文档为删除并添加一个完整的新文档,_version加1。
PUT /{index}/{type}/{id}
局部更新
局部更新的步骤为:
1 从旧文档中检索JSON
2 修改它
3 删除旧文档
4 索引新文档
更新语句:
POST /website/blog/1/_update
{
"doc" : {
"tags" : [ "testing" ],
"views": 0
}
}
更新冲突解决
Elasticsearch是分布式的。当文档被创建、更新或删除,文档的新版本会被复制到集群的其它节点。index、get、delete请求时,每个文档都有一个_version号码,这个号码在文档被改变时加一。Elasticsearch使用这个_version保证所有修改都被正确排序。当一个旧版本出现在新版本之后,它会被简单的忽略。
网友评论