增删改查是数据库的基础操作方法。ES 虽然不是数据库,但是很多场合下,都被 人们当做一个文档型 NoSQL 数据库在使用,原因自然是因为在接口和分布式架构 层面的相似性。虽然在 Elastic Stack 场景下,数据的写入和查询,分别由 Logstash 和 Kibana 代劳,作为测试、调研和排错时的基本功,还是需要了解一下 ES 的增删改查用法的。

基于HTTP协议,以JSON为数据交互格式的RESTful API

向Elasticsearch发出的请求的组成部分与其它普通的HTTP请求是一样的:

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
#VERB HTTP方法:GET, POST, PUT, HEAD, DELETE
#PROTOCOL http或者https协议(只有在Elasticsearch前面有https代理的时候可用)
#HOST Elasticsearch集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫localhost
#PORT Elasticsearch HTTP服务所在的端口,默认为9200
#PATH API路径(例如_count将返回集群中文档的数量),PATH可以包含多个组件,例如_cluster/stats或者_nodes/stats/jvm
#QUERY_STRING 一些可选的查询请求参数,例如?pretty参数将使请求返回更加美观易读的JSON数据

增-数据写入:

使用Postman工具

使用curl命令。

curl -X POST \http://10.100.172.111:9200/test-2017.08.28/testlog/ \-d '{
"date" : "2017-07-28",
"user" : "xiaoke",
"mesg" : "这是第一条数据."
}'

返回结果如下

{"_index": "test-2017.08.28","_type": "testlog","_id": "AV2H9ikTjAqppDoQq45o","_version": 1,"result": "created","_shards": {"total": 2,"successful": 2,"failed": 0},"created": true
}

这个返回值意味着我们的索引请求已经被成功创建,其中还包含了_index, _type以及_id的元数据,以及一个新的元素_version

_index ES集群中的索引名称(相当于MYSQL中的database)

_type 相当于数据库中的表()

_id 就是id(可以自己指定也以自增,插入数据的唯一ID,删除和更新单条数据,都需要用到此ID)

查-数据获取

可以看到,在数据写入的时候,会返回该数据的 _id 。这就是后续用来获取数据 的关键:

使用CURL方式

curl -XGET http://10.100.172.111:9200/test-2017.08.28/testlog/AV2IIkPKjAqppDoQrA7n?pretty

返回结果

{"_index" : "test-2017.08.28","_type" : "testlog","_id" : "AV2IIkPKjAqppDoQrA7n","_version" : 1,"found" : true,"_source" : {"date" : "2017-07-28","user" : "xiaoke","mesg" : "这是第一条数据."}
}

这个 _source 里的内容,正是之前写入的数据。可以使用_source只获取源数据部分

删-数据删除

要删除数据,修改发送的 HTTP 请求方法为 DELETE 即可:

 curl -XDELETE http://10.100.172.111:9200/test-2017.08.28/testlog/AV2H9ikTjAqppDoQq45o?pretty

返回结果如下

{"found" : true,"_index" : "test-2017.08.28","_type" : "testlog","_id" : "AV2H9ikTjAqppDoQq45o","_version" : 2,"result" : "deleted","_shards" : {"total" : 2,"successful" : 2,"failed" : 0}
}

删除不单针对单条数据,还可以删除整个整个索引。甚至可以用通配符。

改-数据更新

已经写过的数据,同样还是可以修改的。有两种办法,一种是全量提交,即指明

_id 再发送一次写入请求。

[root@inte-es-node1 tmp]# curl -XGET http://10.100.172.111:9200/test-2017.08.28/testlog/AV2IIkPKjAqppDoQrA7n?pretty
{"_index" : "test-2017.08.28","_type" : "testlog","_id" : "AV2IIkPKjAqppDoQrA7n","_version" : 1,"found" : true,"_source" : {"date" : "2017-07-28","user" : "xiaoke","mesg" : "这是第一条数据."}
}
[root@inte-es-node1 tmp]# curl -X POST http://10.100.172.111:9200/test-2017.08.28/testlog/AV2IIkPKjAqppDoQrA7n/ \
>  -d '{
> "date" : "2017-07-28",
> "user" : "xiaoke",
> "mesg" : "这是第2条数据."
> }'
{"_index":"test-2017.08.28","_type":"testlog","_id":"AV2IIkPKjAqppDoQrA7n","_version":2,"result":"updated","_shards":{"total":2,"successful":2,"failed":0},"created":false}[root@inte-es-node1 tmp]#
[root@inte-es-node1 tmp]# curl -XGET http://10.100.172.111:9200/test-2017.08.28/testlog/AV2IIkPKjAqppDoQrA7n?pretty
{"_index" : "test-2017.08.28","_type" : "testlog","_id" : "AV2IIkPKjAqppDoQrA7n","_version" : 2,"found" : true,"_source" : {"date" : "2017-07-28","user" : "xiaoke","mesg" : "这是第2条数据."}
}

可以看到,我先查询了一下_id为AV2IIkPKjAqppDoQrA7n的内容,然后做了修改在次查询。

转载于:https://blog.51cto.com/kexiaoke/1951752

elasticsearch的增删改查相关推荐

  1. elasticsearch之增删改查与其他基本操作

    要安装elasticsearch就要安装1.8版本以上的java的JDK 我是在windows下安装的elasticsearch 下载java的1.8以上的JDK,elasticsearch,kiba ...

  2. go-elasticSearch实战篇,带你学会elasticSearch的增删改查

    前言 哈喽,everybody,这是go-elastic学习系列教程第二篇文章.上一篇我们学习了ElasticSearch基础,如果还不懂基础的,可以先看一看上一篇文章,传送门.这一篇我们开始实战,写 ...

  3. 用spring.data的API,ElasticsearchRestTemplate来简单操作Elasticsearch的增删改查等功能~

    写本文的目的就是分享一下我自己常用的基本方法使用,也方便我自己以后来看看~ 参考了spring官方关于ES的文档,和bilibili上的视频~! 截至今日2022/8/5,spring官方更新到 Sp ...

  4. kibana客户端工具操作ElasticSearch(增删改查三)

    之前一直我们讲的是添加文档和查看文档,下面我们看下怎么修改文档, 第一种方式PUT  覆盖原来的文档 修改文档(覆盖原来的): PUT /lib/user/1 {"first_name&qu ...

  5. kibana客户端工具操作ElasticSearch(增删改查二)

    #不指定id情况下 ElasticSearch自动生成id PUT /lib/user/ {"first_name":"Douglas","last_ ...

  6. 使用kibana客户端工具操作ElasticSearch(增删改查一)

    (因为ElasticSearch是restful请求所以  get post put delete这四种常见的请求) put添加数据 get获取数据 #创建索引库lib 并且对索引库做了分片和备份(由 ...

  7. node-red mysql的增删改查_通过curl或者http请求对elasticsearch中的数据进行增删改查...

    最近学习elasticsearch的数据存储,整体语法还是比较规则的.可以使用浏览器.postman.命令行等进行操作. elasticsearch官网的解释最官方,请查看下面的地址 1. 查询当前集 ...

  8. Elasticsearch在thinkphp5中的使用增删改查(模糊查询、批量查询)

    Elasticsearch在thinkphp5中的使用(模糊查询) 需要安装elasticsearch.elastic-header-master.kibana.analysis-ik四个包,如下图所 ...

  9. Elasticsearch Javascript API增删改查

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

最新文章

  1. 看看别人家 SpringBoot 的全局异常处理,多么优雅....
  2. onenote 思维导图_学生党做笔记,我为什么更推荐OneNote?看后你就明白了
  3. c语言easyx输出文字_做游戏,学编程(C语言) 6 数组之空战游戏
  4. 无法写入最后一个_手机资讯:iPhone 扩容机能否进行刷机刷机后无法激活怎么办...
  5. 国家自然科学基金申请书写作攻略
  6. pythonrq模块_Python RQ 任务队列中的队列 ( Queue )
  7. MATLAB制作PPT(一):插入图片
  8. 什么是java swing_Java干货:解读什么是swing
  9. 云服务器总是自动关机,云服务器出现死机的情况是什么原因?
  10. pyqt5 等待界面 (QMovie 加载 gif)
  11. Win10自带录屏怎么用?一键开启,超级简单!
  12. ipa 修改服务器地址,iOS重签名 – ipa包(服务器适用)
  13. 智慧工地车辆冲洗系统 工地渣土车未冲洗自动抓拍 yolo
  14. 天敏的SDK2000
  15. server数据库标记为可疑 sql_SQL Server 2008数据库被标记为可疑的解决方法
  16. ztree调用的例子(复选框、checkbox)
  17. WORKGROUP无法访问,您可能没有权限使用网络资源,请与这台服务器的管理员联系以查明您是否有访问权限。
  18. latex 希腊字母表示
  19. 利用 shell 脚本进行android 马甲包制作
  20. Python中那些神一样的代码,你知道吗?

热门文章

  1. 数据结构-栈(C语言代码)
  2. python 猜数字大小
  3. python 常用内置函数_Python小白必备的8个最常用的内置函数(推荐)
  4. python 类 实例id递增_Python Django 模板类中 系统默认的主键ID自增,不会随着模板实例的删除而重置问题...
  5. 2020-12-11 图片格式互转:base64、PIL Image opencv cv2互转
  6. php json 转 xml格式,PHP中如何将JSON文件转XML格式
  7. mysql 查询字段语句_mysql查询语句常用字段操作函数
  8. java 将json转换成sql_search-sqlparams
  9. python输入隔行的数组_python-使用间隔掩码numpy数组
  10. java接收的文件转换成临时文件_Android中怎样使用createTempFile实现将字节数据创建到临时文件并转换成FileOutputStream和FileInputStream...