elasticsearch 增删改查(CRUD)

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
}
从结果可以看出,已经删除了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值