前面两课我们了解了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很类似,很简单?不过理解简单,实际使用还是要有大量的操作实践才行,而且实际生产环境中,都是各种复杂查询,后面我们会专门用几节课来讲。

最新文章

  1. angular开发单页面应用--页面资源部分
  2. Sql Server 中锁的概念
  3. 10月16日上午MySQL数据库基础操作(创建、删除)
  4. CentOS 6.4 搭建git 服务器
  5. forms6 builder安装之后设置注册表开发环境
  6. 016. asp.net的验证控件
  7. Ioc 控制反转 实例
  8. CodeForces Round #179 (295A) - Greg and Array
  9. JAVA中的char类型
  10. Flash加载ini文件!
  11. mybatis与spring的整合(使用接口实现crud)
  12. VS 提示对象被多次指定;已忽略多余的指定
  13. [转帖]震惊,用了这么多年的 CPU 利用率,其实是错的
  14. jmeter 压力测试(二) 获取不同格式的当前时间
  15. 基于scrapy-redis分布式爬虫(简易)
  16. win7启动时怎么自动进入桌面
  17. Qt 4.6.2静态编译
  18. css文件 如何使背景图片大小适应div的大小
  19. Java开源博客My-Blog之docker容器组件化修改
  20. SQLAlchemy(2) -- SQLAlchemy的安装

热门文章

  1. pandas模块之读取文件
  2. python+selenium自动化框架搭建
  3. Codeforces 499C:Crazy Town(计算几何)
  4. 【leetcode】75. Sort Colors
  5. opencc模块用langconv替换
  6. jerry
  7. [CSP-S模拟测试]:密州盛宴(贪心)
  8. spring boot 修改banner
  9. 学会如何使用,pycharm,和gitlanb
  10. js中浅谈this对象(未补充完整)