elasticsearch的增删改查
增删改查是数据库的基础操作方法。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的增删改查相关推荐
- elasticsearch之增删改查与其他基本操作
要安装elasticsearch就要安装1.8版本以上的java的JDK 我是在windows下安装的elasticsearch 下载java的1.8以上的JDK,elasticsearch,kiba ...
- go-elasticSearch实战篇,带你学会elasticSearch的增删改查
前言 哈喽,everybody,这是go-elastic学习系列教程第二篇文章.上一篇我们学习了ElasticSearch基础,如果还不懂基础的,可以先看一看上一篇文章,传送门.这一篇我们开始实战,写 ...
- 用spring.data的API,ElasticsearchRestTemplate来简单操作Elasticsearch的增删改查等功能~
写本文的目的就是分享一下我自己常用的基本方法使用,也方便我自己以后来看看~ 参考了spring官方关于ES的文档,和bilibili上的视频~! 截至今日2022/8/5,spring官方更新到 Sp ...
- kibana客户端工具操作ElasticSearch(增删改查三)
之前一直我们讲的是添加文档和查看文档,下面我们看下怎么修改文档, 第一种方式PUT 覆盖原来的文档 修改文档(覆盖原来的): PUT /lib/user/1 {"first_name&qu ...
- kibana客户端工具操作ElasticSearch(增删改查二)
#不指定id情况下 ElasticSearch自动生成id PUT /lib/user/ {"first_name":"Douglas","last_ ...
- 使用kibana客户端工具操作ElasticSearch(增删改查一)
(因为ElasticSearch是restful请求所以 get post put delete这四种常见的请求) put添加数据 get获取数据 #创建索引库lib 并且对索引库做了分片和备份(由 ...
- node-red mysql的增删改查_通过curl或者http请求对elasticsearch中的数据进行增删改查...
最近学习elasticsearch的数据存储,整体语法还是比较规则的.可以使用浏览器.postman.命令行等进行操作. elasticsearch官网的解释最官方,请查看下面的地址 1. 查询当前集 ...
- Elasticsearch在thinkphp5中的使用增删改查(模糊查询、批量查询)
Elasticsearch在thinkphp5中的使用(模糊查询) 需要安装elasticsearch.elastic-header-master.kibana.analysis-ik四个包,如下图所 ...
- Elasticsearch Javascript API增删改查
查询 根据索引.类型.id进行查询: client.get({ index:'myindex', type:'mytype', id:1 },function(error, response){// ...
最新文章
- 看看别人家 SpringBoot 的全局异常处理,多么优雅....
- onenote 思维导图_学生党做笔记,我为什么更推荐OneNote?看后你就明白了
- c语言easyx输出文字_做游戏,学编程(C语言) 6 数组之空战游戏
- 无法写入最后一个_手机资讯:iPhone 扩容机能否进行刷机刷机后无法激活怎么办...
- 国家自然科学基金申请书写作攻略
- pythonrq模块_Python RQ 任务队列中的队列 ( Queue )
- MATLAB制作PPT(一):插入图片
- 什么是java swing_Java干货:解读什么是swing
- 云服务器总是自动关机,云服务器出现死机的情况是什么原因?
- pyqt5 等待界面 (QMovie 加载 gif)
- Win10自带录屏怎么用?一键开启,超级简单!
- ipa 修改服务器地址,iOS重签名 – ipa包(服务器适用)
- 智慧工地车辆冲洗系统 工地渣土车未冲洗自动抓拍 yolo
- 天敏的SDK2000
- server数据库标记为可疑 sql_SQL Server 2008数据库被标记为可疑的解决方法
- ztree调用的例子(复选框、checkbox)
- WORKGROUP无法访问,您可能没有权限使用网络资源,请与这台服务器的管理员联系以查明您是否有访问权限。
- latex 希腊字母表示
- 利用 shell 脚本进行android 马甲包制作
- Python中那些神一样的代码,你知道吗?
热门文章
- 数据结构-栈(C语言代码)
- python 猜数字大小
- python 常用内置函数_Python小白必备的8个最常用的内置函数(推荐)
- python 类 实例id递增_Python Django 模板类中 系统默认的主键ID自增,不会随着模板实例的删除而重置问题...
- 2020-12-11 图片格式互转:base64、PIL Image opencv cv2互转
- php json 转 xml格式,PHP中如何将JSON文件转XML格式
- mysql 查询字段语句_mysql查询语句常用字段操作函数
- java 将json转换成sql_search-sqlparams
- python输入隔行的数组_python-使用间隔掩码numpy数组
- java接收的文件转换成临时文件_Android中怎样使用createTempFile实现将字节数据创建到临时文件并转换成FileOutputStream和FileInputStream...