前面两课我们了解了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. 使用axios上传文件到阿里云对象文件存储服务器oss

    背景 OSS可用于图片.音视频.日志等海量文件的存储.各种终端设备.Web网站程序.移动应用可以直接向OSS写入或读取数据.OSS支持流式写入和文件写入两种方式.使用阿里云oss做文件存储的时候,不可 ...

  2. wxpython总体

    人到夏天就特别懒 from math import * import wx def sin_fun(event): a=text_angle.GetValue() b=sin(radians(floa ...

  3. python之 matplotlib模块之基本三图形(直线,曲线,直方图,饼图)

    matplotlib模块是python中一个强大的绘图模块 安装 pip  install matplotlib 首先我们来画一个简单的图来感受它的神奇 import numpy as np impo ...

  4. JavaSE---多线程---扩展

    1.线程的类型 1.1 用户线程 1.2 内核线程 2.java线程 java线程的创建依赖于系统内核,通过JVM调用系统库创建内核线程: 内核线程与java-Thread是1:1的映射关系: 3.线 ...

  5. Linux的cat命令详解

    The cat command reads one or more files and copies them to standard output 也就是说,cat命令读取文件,并显示在 stand ...

  6. Ubuntu 16.04配置vncviewer

    网上有各种各样的教程,既混乱又复杂.这是提供一个亲自测试可用的配置方案,十分简单,桌面环境选用xfce,Ubuntu版本是16.04. 1 安装 Xfce 和 TightVNC sudo apt in ...

  7. HTTP协议-get请求与post请求的区别

    区别: 参数:get通过url进行传递:post放在request body中 长度:get请求在url的长度是有限制的:而post没有(其实这个限制是来自浏览器和web服务器对url的限制,并不是h ...

  8. C++ LinearRegression代码实现

    这里基本完全参考网络资源完成,有疑问欢迎留言! LinearRegression.h #pragma once #ifndef ML_LINEAEEEGRESSION_H #define ML_LIN ...

  9. 如何在Ubuntu下搭建tftp服务器

    远程桌面连接工具   今天开始调试arm的板子,要通过tftp下载到板子上,所以又要配置tftp服务器,真的烦死了… (本人酷爱装系统,所以经常都要搞配置) 因为之前已经在Ubuntu下搭建过很多次t ...

  10. HDU 6055 Regular polygon —— 2017 Multi-University Training 2

    Regular polygon Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...