文档数据的增删改查 (重点)
- 文档数据
- json形式的字符串
- 除了本身包含的数据, 还会包含一些其他信息
- _index 所在的索引库
- _type 类型(所在的表)
- _id 文档id 一般不会自动生成, 而是让其跟踪基础数据库的主键
添加数据
- 使用自定义的文档id 优先考虑
curl -X PUT /{index}/{type}/{id}
{
"field": "value",
...
}
- 自动生成文档id
curl -X PUT /{index}/{type}
{
"field": "value",
...
}
- _version 每修改一次数据, 版本号加1, 可以作为乐观锁的判断标准来使用
查询数据
- 根据文档id, 其他的高级查询在下一节
# 获取所有的字段数据
curl 127.0.0.1:9200/articles/article/150000?pretty
# 获取一部分字段数据
curl 127.0.0.1:9200/articles/article/150000?_source=title,content\&pretty
# 不获取任何字段的数据 使用率最高
curl 127.0.0.1:9200/articles/article/150000?_source=false\&pretty
判断文档是否存在
- 注意需要添加 -i 选项
curl -i -X HEAD 127.0.0.1:9200/articles/article/150000
更新文档
- 本质是先删除该文档的所有数据, 再更新数据, 所以更新时数据必须全部更新
curl -X PUT 127.0.0.1:9200/articles/article/150000 -H 'Content-Type:application/json' -d '
{
"article_id": 150000,
"user_id": 1,
"title": "c必须是世界上最好的语言",
"content": "确实如此",
"status": 2,
"create_time": "2019-04-03"
}'
删除文档
curl -X DELETE 127.0.0.1:9200/articles/article/150000
取出多个文档
curl -X GET 127.0.0.1:9200/_mget -d '
{
"docs": [
{
"_index": "articles",
"_type": "article",
"_id": 150000
},
{
"_index": "articles",
"_type": "article",
"_id": 150001
}
]
}'
- 总结
# 增加数据
PUT /数据库/类型/文档id -d {} # 使用自定义的文档id 一般文档id为基础数据库的主键
# 删除数据
DELETE /数据库/类型/文档id
# 查询数据 根据文档id查询
GET /数据库/类型/文档id?_source=false 不取出任何字段, 但是会返回文档id 字段名 _id
# 更新数据 不能单独更新一个字段, 必须将该文档的所有都更新(删除原数据, 再覆盖的机制)
PUT /数据库/类型/文档id -d