前面两课我们了解了ES的基本概念并且学会了安装ES,这节课我们就来讲讲ES基本的增删改查;ES主要对外界提供的是REST风格的API,我们通过客户端操作ES本质上就是API的调用。在第一课我们就讲了索引、类型和文档的含义,它们分别对应MYSQL的数据库、表和一行数据。所以,我们在讲ES的API时,大家可以按照MYSQL的SQL语句对应做理解。

ES Restful API GET、POST、PUT、DELETE、HEAD含义(这几个是API的基本概念): 
1)GET:获取请求对象的当前状态。 
2)POST:改变对象的当前状态。 
3)PUT:创建一个对象。 
4)DELETE:销毁对象。 
5)HEAD:请求获取对象的基础信息。

下面我们就利用Kibana的图形化界面,来展示下ES的基本API。

1、新建一个索引(类似mysql 新建数据库)

PUT /lib/
{
"settings":{
"index": {
"number_of_shards":3,
"number_of_replicas":1
}
}
}
或者简单点,使用默认的分片和复制,可以直接
PUT lib2
这样也可以生成索引

执行成功后,会显示如下:

{
"acknowledged": true,
"shards_acknowledged": true,
"index": "lib"
}

其中,lib表示索引名称,PUT 参数里的number_of_shards表示分片数量,number_of_replicas表示复制备份数量。

2、查询索引

GET /lib/_settings #查询索引lib的设置,

GET _all/_settings #查询所有的索引设置

3、添加文档(类似MYSQL添加一条数据)

PUT /lib/user/1
{
"name" : "kakatadage",
"age" : 33,
"about": "I like football!",
"interests" : ["girls","football"]
}
使用PUT添加,其中user表示类型(type),1代表这条数据的主键;如果id不填也可以,ES会自动生成一条主键,不过这时就不能用PUT了,需要使用POST添加

执行成功,结果如下:

{
"_index": "lib",
"_type": "user",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}

4、查询文档

GET /lib/user/1   //查询ID为1的数据

5、修改文档

PUT /lib/user/1    //PUT方式进行修改,这种是把原来对应文档覆盖掉
{
"name" : "kakatadage",
"age" : 30,
"about": "I like money!",
"interests" : ["music","money"]
}
POST /lib/user/1/_update  //POST方式修改的话,可以针对对应field来修改,比PUT要轻量
{
"doc": {
"age" :32
}
}

6、删除文档或索引

DELETE lib/user/1  //删除一个文档
DELETE lib2 //删除索引

好了,基本的增删改查我们讲完了,是不是和SQL很类似,很简单?不过理解简单,实际使用还是要有大量的操作实践才行,而且实际生产环境中,都是各种复杂查询,后面我们会专门用几节课来讲。

Es学习第三课, ElasticSearch基本的增删改查的更多相关文章

  1. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  2. GZFramwork数据库层《三》普通主从表增删改查

    运行结果: 使用代码生成器(GZCodeGenerate)生成tb_Cusomer和tb_CusomerDetail的Model 生成器源代码下载地址: https://github.com/Gars ...

  3. golang学习之beego框架配合easyui实现增删改查及图片上传

    golang学习之beego框架配合easyui实现增删改查及图片上传 demo目录: upload文件夹主要放置上传的头像文件,main是主文件,所有效果如下: 主页面: 具体代码: <!DO ...

  4. 【转】mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    mongoDB 学习笔记纯干货(mongoose.增删改查.聚合.索引.连接.备份与恢复.监控等等) http://www.cnblogs.com/bxm0927/p/7159556.html

  5. 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建

    salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建   VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...

  6. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  7. 04-springboot整合elasticsearch初识-简单增删改查及复杂排序,分页,聚合操作

        前面大概了解了一下elasticsearch的数据存储和数据的查询.现在学习一下,es的复杂操作.     官网相关文档地址:https://www.elastic.co/guide/en/e ...

  8. 一、Android四大框架之ContentProvider的学习与运用,实现SQLite的增删改查。

    本文系原创博客,文中不妥烦请指出,如需转载摘要请注明出处! ContentProvider的学习与运用 Alpha Dog 2016-04-13  10:27:06 首先,项目的地址:https:// ...

  9. Oracle学习总结_day01_day02_表的创建_增删改查_约束

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 更新: SELECT * FROM (SELECT R ...

随机推荐

  1. hive之调优

    1.简单的查询,就是只是select,不带count,sum,group by这样的,都不走map/reduce,直接读取hdfs文件进行filter过滤,即尽量让fetch task(当开启一个Fe ...

  2. SQL执行顺序和coalesce以及case when的用法

    1.mysql的执行顺序 from on join where group by having select distinct union   //UNION 操作符用于合并两个或多个 SELECT ...

  3. Linux用户登出之后保持后台进程(nohup)

    使用&可以将进程置于后台,但是用户从Shell登出之后,进程会自动结束.想要在登出之后保持进程运行,就要结合nohup命令使用. 例如: nohup find -size +100k > ...

  4. hdu 5810:Balls and Boxes(期望)

    题目链接 这题似乎就是纯概率论.. E(V)=D(X_i)=npq (p=1/m,p+q=1) #include<bits/stdc++.h> using namespace std; t ...

  5. 输入流之顶层抽象InputStream

    该类是所有二进制输入流的的抽象父类 类中主要方法解释说明如下 (1)public abstract int read() throws IOException; 该方法是从输入流中读取下一个字节,返回 ...

  6. Linux 下查看用户组信息

    1.id 通过id 可以直接查看到当前登陆用户的uid, group id , group name 等等.. 2.groups

  7. 改MYSQL数据库时遇的错

    //http://www.dongcoder.com/detail-1103326.html

  8. 用 Flask 来写个轻博客 (21) — 结合 reCAPTCHA 验证码实现用户注册与登录

    目录 目录 前文列表 扩展阅读 添加账户管理蓝图 新建控制器蓝图 新建表单 新建蓝图 main 的视图函数 新建模板 页面效果 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Fla ...

  9. ReplicatorLayer 复制图层

    使用文档介绍: #import <QuartzCore/CALayer.h> NS_ASSUME_NONNULL_BEGIN CA_CLASS_AVAILABLE (10.6, 3.0, ...

  10. 目前写出的bug

    要检测p->next 与p都不=NULL while(p->next!=NULL &&p!=NULL) 会导致访问access NULL pointer的runtime错误 ...