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
}
}

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

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

elasticsearch实例讲解增删改查的更多相关文章

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

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

  2. elasticsearch索引的增删改查入门

    为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful接口URL的格式: http://localhost:9200/<index>/&l ...

  3. 我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!

    我把我写的四种方法代码贴上来吧,照着写没啥问题. 注: <bookstore> <book> <Id>1</Id> <tate>2010-1 ...

  4. Es学习第三课, ElasticSearch基本的增删改查

    前面两课我们了解了ES的基本概念并且学会了安装ES,这节课我们就来讲讲ES基本的增删改查:ES主要对外界提供的是REST风格的API,我们通过客户端操作ES本质上就是API的调用.在第一课我们就讲了索 ...

  5. Spring MVC实例(增删改查)

    数据库配置文件application-context-jdbc.xml <?xml version="1.0" encoding="UTF-8"?> ...

  6. SpringBoot 集成Elasticsearch进行简单增删改查

    一.引入的pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  7. Elasticsearch Javascript API增删改查

    查询 根据索引.类型.id进行查询: client.get({ index:'myindex', type:'mytype', id:1 },function(error, response){// ...

  8. lucene4.10.2实例(增删改查)

    最新jar和src免费下载:http://download.csdn.net/detail/u011518709/8248403 lucene 包的组成结构:对于外部应用来说索引模块(index)和检 ...

  9. java连接mysql以及增删改查操作

    java连接数据库的代码基本是固定的,步骤过程觉得繁琐些,代码记起来对我来说是闹挺.直接上代码: (温馨提醒:你的项目提前导入连接数据库的jar包才有的以下操作 ) class DBConnectio ...

随机推荐

  1. 从一个局长使用BS系统的无奈看测试点

    今天我点名买了个B/S系统,听说只要有浏览器就能用.我最讨厌装客户端了,用浏览器就是方便啊. 下面就是我使用这个系统碰到的麻烦事: 我登录失败的时候没有任何提示,这没什么,反正提示也只是说失败…… 进 ...

  2. 将python脚本转换成exe文件--pyinstaller

    遇到的大坑: 直接运行python文件效果:         执行 pyinstaller  -F -w  -p  -i ./123.ico  ./main.py    在dict文件夹下生成exe文 ...

  3. Python生成器-博文读后感

    Windows 10家庭中文版,Python 3.6.4, 上午看过了一篇讲Python生成器的博文: 提高你的Python: 解释‘yield’和‘Generators(生成器)’(英文原文) 这篇 ...

  4. Luogu P1750 【出栈序列】

    一眼(万年)贪心minn设小调不出来祭 首先要保证更靠前的输出更小那么容易想到,对于之后可能入栈的元素(即栈的剩余空间仍能装下的所有元素),我们可以取其中的最小值minn,和栈顶元素$top$比较,如 ...

  5. 在 SQL Server 2005 中配置数据库邮件

    一.            SQL Server发邮件原理和组件介绍: 数据库邮件有4个组件:配置文件.邮件处理组件.可执行文件以及“日志记录和审核组件”. l  配置组件包括: 1)数据库邮件帐户包 ...

  6. Effective STL 笔记 -- Item 9: Choose carefully among erasing options

    假设有一个容器中存放着 int ,Container<int> c, 现在想从其中删除数值 1963,可以有如下方法: 1: c.erase(remove(c.begin(), c.end ...

  7. Rookey.Frame之实体类

    上周跟大家分享了Rookey.Frame框架的初始化功能,今天继续给大家介绍实体类的设计. 先看下下面菜单实体示例代码: using Rookey.Frame.EntityBase; using Ro ...

  8. ECshop 迁移到 PHP7版本时遇到的兼容性问题,ecshopphp7

    ECshop 迁移到 PHP7版本时遇到的兼容性问题,ecshopphp7 在 PHP7 上安装 ECShop V2.7.3时,报错! Deprecated: Methods with the sam ...

  9. python脚本获取本机公网ip

    1.获取公网IP地址方式,访问:http://txt.go.sohu.com/ip/soip 2.python脚本实现: #!/usr/bin/python # -*- coding:utf8 -*- ...

  10. softmax 杂谈

    在多分类问题中,我们可以使用 softmax 函数,对输出的值归一化为概率值.下面举个例子: import sys sys.path.append("E:/zlab/") from ...