elasticsearch 增删改查(CRUD)
本文阅读前提:
1、已经安装了elasticsearch。可以参考:http://blog.csdn.net/wild46cat/article/details/62040347
2、已经安装了kibana。可以参考:http://blog.csdn.net/wild46cat/article/details/62881828
好,下面上货。
添加:
首先建立索引xytest,type为student,document的id为1。PUT /xytest/sutdent/1
{
"sid":"00001",
"name":"怀雨竹",
"age":"25",
"region":"黑龙江省 鸡西市 密山市",
"grade":[
{"数学":80},
{"语文":79},
{"英语":90}
]
}
显示结果为:
{
"_index": "xytest",
"_type": "sutdent",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
可以看到,created属性为true,说明添加成功。
下面我们使用批量操作:_bulk
批量添加
POST _bulk
{"create" : { "_index" : "xytest", "_type" : "sutdent", "_id" : "2" } }
{"sid":"00002","name":"符巧","age":"26","region":"河北省 廊坊市 霸州市","grade":[{"数学":70},{"语文":89},{"英语":79}]}
{"create" : { "_index" : "xytest", "_type" : "sutdent", "_id" : "3" } }
{"sid":"00003","name":"韩一","age":"27","region":"辽宁省 大连市 旅顺口区","grade":[{"数学":80},{"语文":79},{"英语":69}]}
{"create" : { "_index" : "xytest", "_type" : "sutdent", "_id" : "4" } }
{"sid":"00004","name":"符龙","age":"37","region":"河北省 保定市 清苑县","grade":[{"数学":80},{"语文":79},{"英语":69}]}
{"create" : { "_index" : "xytest", "_type" : "sutdent", "_id" : "5" } }
{"sid":"00005","name":"范旭","age":"30","region":"新疆维吾尔自治区 和田地区 和田县","grade":[{"数学":90},{"语文":69},{"英语":60}]}
{"create" : { "_index" : "xytest", "_type" : "sutdent", "_id" : "6" } }
{"sid":"00006","name":"牧琢杭","age":"26","region":"广东省 湛江市 赤坎区","grade":[{"数学":80},{"语文":63},{"英语":90}]}
操作后显示为:
{
"took": 279,
"errors": false,
"items": [
{
"create": {
"_index": "xytest",
"_type": "sutdent",
"_id": "2",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true,
"status": 201
}
},
{
"create": {
"_index": "xytest",
"_type": "sutdent",
"_id": "3",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true,
"status": 201
}
},
{
"create": {
"_index": "xytest",
"_type": "sutdent",
"_id": "4",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true,
"status": 201
}
},
{
"create": {
"_index": "xytest",
"_type": "sutdent",
"_id": "5",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true,
"status": 201
}
},
{
"create": {
"_index": "xytest",
"_type": "sutdent",
"_id": "6",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true,
"status": 201
}
}
]
}
注意:如果在添加索引的时候没有指定文档id,那么会自动生成一个UUID作为唯一标识文档的文档id。
查询(这里只介绍基本的查询,复杂的查询DSL,参考文章:http://blog.csdn.net/wild46cat/article/details/62887865):
1、查询索引中的所有文档(增加pretty参数,能够使输出的结果更加美化。)GET xytest/sutdent/_search?pretty
结果:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 6,
"max_score": 1,
"hits": [
{
"_index": "xytest",
"_type": "sutdent",
"_id": "5",
"_score": 1,
"_source": {
"sid": "00005",
"name": "范旭",
"age": "30",
"region": "新疆维吾尔自治区 和田地区 和田县",
"grade": [
{
"数学": 90
},
{
"语文": 69
},
{
"英语": 60
}
]
}
},
{
"_index": "xytest",
"_type": "sutdent",
"_id": "2",
"_score": 1,
"_source": {
"sid": "00002",
"name": "符巧",
"age": "26",
"region": "河北省 廊坊市 霸州市",
"grade": [
{
"数学": 70
},
{
"语文": 89
},
{
"英语": 79
}
]
}
},
{
"_index": "xytest",
"_type": "sutdent",
"_id": "4",
"_score": 1,
"_source": {
"sid": "00004",
"name": "符龙",
"age": "37",
"region": "河北省 保定市 清苑县",
"grade": [
{
"数学": 80
},
{
"语文": 79
},
{
"英语": 69
}
]
}
},
{
"_index": "xytest",
"_type": "sutdent",
"_id": "6",
"_score": 1,
"_source": {
"sid": "00006",
"name": "牧琢杭",
"age": "26",
"region": "广东省 湛江市 赤坎区",
"grade": [
{
"数学": 80
},
{
"语文": 63
},
{
"英语": 90
}
]
}
},
{
"_index": "xytest",
"_type": "sutdent",
"_id": "1",
"_score": 1,
"_source": {
"sid": "00001",
"name": "怀雨竹",
"age": "25",
"region": "黑龙江省 鸡西市 密山市",
"grade": [
{
"数学": 80
},
{
"语文": 79
},
{
"英语": 90
}
]
}
},
{
"_index": "xytest",
"_type": "sutdent",
"_id": "3",
"_score": 1,
"_source": {
"sid": "00003",
"name": "韩一",
"age": "27",
"region": "辽宁省 大连市 旅顺口区",
"grade": [
{
"数学": 80
},
{
"语文": 79
},
{
"英语": 69
}
]
}
}
]
}
}
2、查询索引中的指定id号的文档(增加pretty参数,能够使输出的结果更加美化。)
GET xytest/sutdent/1?pretty
结果:
{
"_index": "xytest",
"_type": "sutdent",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"sid": "00001",
"name": "怀雨竹",
"age": "25",
"region": "黑龙江省 鸡西市 密山市",
"grade": [
{
"数学": 80
},
{
"语文": 79
},
{
"英语": 90
}
]
}
}
修改:
1、直接重写PUT xytest/sutdent/1
{
"sid": "00001",
"name": "怀竹",
"age": "26",
"region": "黑龙江省 鸡西市 密山市",
"grade": [
{
"数学": 80
},
{
"语文": 79
},
{
"英语": 90
}
]
}
结果为:
{
"_index": "xytest",
"_type": "sutdent",
"_id": "1",
"_version": 2,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": false
}
注意到_version变为了2,同时created是false。这就说明了是更新。
我们再次查询一下:
GET xytest/sutdent/1
结果:
{
"_index": "xytest",
"_type": "sutdent",
"_id": "1",
"_version": 2,
"found": true,
"_source": {
"sid": "00001",
"name": "怀竹",
"age": "26",
"region": "黑龙江省 鸡西市 密山市",
"grade": [
{
"数学": 80
},
{
"语文": 79
},
{
"英语": 90
}
]
}
}
注意到,现在已经改变了age属性,由25变为了26。
2、只重写单独的属性
POST xytest/sutdent/1/_update
{
"doc": {
"age":30
}
}
结果:
{
"_index": "xytest",
"_type": "sutdent",
"_id": "1",
"_version": 3,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
}
}
可以看到,_version属性已经变成了3.
再次查询
GET xytest/sutdent/1
结果为:
{
"_index": "xytest",
"_type": "sutdent",
"_id": "1",
"_version": 3,
"found": true,
"_source": {
"sid": "00001",
"name": "怀竹",
"age": 30,
"region": "黑龙江省 鸡西市 密山市",
"grade": [
{
"数学": 80
},
{
"语文": 79
},
{
"英语": 90
}
]
}
}
可以看到,age字段已经变为30了。注意:这种方式同样可以添加属性字段。
删除:
DELETE xytest/sutdent/1结果:
{
"found": true,
"_index": "xytest",
"_type": "sutdent",
"_id": "1",
"_version": 4,
"result": "deleted",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
}
}
再次查询,看是否已经删除了。
GET xytest/sutdent/1
结果:
{
"_index": "xytest",
"_type": "sutdent",
"_id": "1",
"found": false
}
从结果可以看出,已经删除了。