1、首先弄明白四个概念

elasticsearch 关系型数据库
index 数据库
type
document
field 字段

如果刚一开始理解比较困难,那你就在心中默念100遍,10遍也可以。。。

如果你做过面向对象开发,我觉得elasticsearch的这四个概念还是很好理解的。

需要重点说明的是document就是一个json格式的字符串,里面包括N个字段。我们可以想象将面向对象语言里面的一个对象序列化成json字符串。

关系型数据库需要先建库,再建表。elasticsearch不需要,在你新增的时候会根据你指定的index,type,document,field自动创建。当然先创建索引也是可以的。

接下来的测试我会这么定义我们的index,type

index:news

type:new

field:title,content。就两个吧,如下:

{
"title":"",
"content":""
}

我使用的客户端是kibana。

2、新增document

PUT news/new/6
{
"title":"title test",
"conent":"content test"
}

结果:

{
"_index": "news",
"_type": "new",
"_id": "6",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"created": true
}

解释下:

PUT news/new/6

这条命令的原型是这样的:

PUT index/type/id

PUT命令是http请求的一种方式,如果了解过restful api,对这个命令应该不陌生。除了我们大家熟悉的get,post,还有put,delete,head等。

news就是我们需要创建的索引,可以理解为数据库

new就是我们需要创建的type,可以理解为表

6就是文档的id,可以理解为一条记录的id

仔细看返回结果,先别看_shards,其它几个字段大家看了之后应该会立马明白。

_version,是elasticsearch里面用来控制版本冲突的,知道下就行,如果修改或者删除,_version的值都会+1。

3、修改document

修改又分为全量修改和部分修改

全量修改用PUT,部分修改用POST

全量修改:

PUT news/new/6
{
"title":"title test"
}

用查询命令(下面有)查看结果:

{
"_index": "news",
"_type": "new",
"_id": "6",
"_version": 2,
"found": true,
"_source": {
"title": "title test"
}
}

纳尼?我的content字段呢?问题就出在这里,如果用全量修改(PUT),就等于是删除之后再新建。

如果有人说我只想修改title字段怎么办?看下面。

部分修改

POST /news/new/6/_update
{
"doc":{
"title":"abcdefg"
}
}

用查询命令(下面有)查看结果:

{
"_index": "news",
"_type": "new",
"_id": "6",
"_version": 4,
"found": true,
"_source": {
"title": "abcdefg",
"content": "content test"
}
}

我在执行POST命令前,把数据恢复了,所以在执行POST命令且只修改title字段后,content还是保留的。且_version变成了4,而不是3。

4、查询document

GET /news/new/6

结果:

{
"_index": "news",
"_type": "new",
"_id": "6",
"_version": 4,
"found": true,
"_source": {
"title": "abcdefg",
"content": "content test"
}
}

5、删除document

DELETE /news/new/6

结果:

{
"found": true,
"_index": "news",
"_type": "new",
"_id": "6",
"_version": 5,
"result": "deleted",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
}
}

很简单。简单的增删改查介绍完毕。

剧透一下,接下来会讲中文分词+全文搜索

最新文章

  1. DNS缓存
  2. SpringMVC之入门
  3. 高性能MySQL笔记 第4章 Schema与数据类型优化
  4. Clr Via C#读书笔记---程序集的加载和反射
  5. RDIFramework.NET ━ 9.14 数据库连接管理 ━ Web部分
  6. 图解——VS发布网站详细步骤
  7. VS输入输出基本操作以及数据类型和类型转换
  8. 凸包---HDU 2202
  9. MySQL基础之第6章 创建、修改和删除表 .
  10. GoF——组合模式
  11. 关于HTML学习整理(一)
  12. [insight] debug
  13. 微信跳转,手机WAP浏览器一键超级跳转微信指定页面
  14. 章节八、2-火狐的插件TryXPath
  15. python之进程,线程,协程简单理解
  16. tomcat简介与配置
  17. 450. Delete Node in a BST 删除bst中的一个节点
  18. 通过kubernetes构建ela服务
  19. Linux命令大全总结
  20. C语言 · 色盲的民主

热门文章

  1. checkbox 全选和取消
  2. idea中使用tomcat 方式启动spring boot项目
  3. ArcMap2SLD使用
  4. QUnit 实践一
  5. Python全局变量和局部变量
  6. 使用Dockerfile构建docker lnmp环境
  7. eclipse中Maven项目jar问题
  8. Effective STL 学习笔记14: Use reserve to avoid unnecessary reallocations.
  9. hdu 1171 有num1个w1 , num2个w2 ……. (母函数)
  10. iOS模块器截屏闪退