ELK日志分析平台—— elasticsearch restful

目录

 

1、RESTFUL定义 

2、ES 内置的REST接口 

3、CURL 创建索引库

4、查询索引-GET 

5、DSL查询 

6、MGET查询

7、HEAD的使用 

8、ES更新

9、ES删除 

10、ES版本控制 


1、RESTFUL定义 


 REST (REpresentation State Transfer)描述了一个 架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的 主要编写者之一。REST 指的是一组架构约束条件和原则。 满足这些约束条件和原则的应用程序或设计就是 RESTful。 
REST 定义 
 Web 应用程序最重要的 REST 原则是,客户端和服 务器之间的交互在请求之间是无状态的。从客户端到服务 器的每个请求都必须包含理解请求所必需的信息。如果服 务器在请求之间的任何时间点重启,客户端不会得到通知。 此外,无状态请求可以由任何可用服务器回答,这十分适 合云计算之类的环境。客户端可以缓存数据以改进性能。 

2、ES 内置的REST接口 


URL 说明 
/index/_search 搜索指定索引下的数据 
/_aliases 获取或者操作索引下的别名 
/index/ 查看指定索引下的详细信息 
/index/type/ 创建或者操作类型 
/index/mapping 创建或者操作mapping 
/index/settings 创建或者操作settings 
/index/_open 打开指定索引 
/index/_close 关闭指定索引 
/index/_refresh 刷新索引(使新增加内容对搜索可见, 不保证数据被写入磁盘) /index/_flush 刷新索引(会触发Lucene提交数据) 
CURL命令 
简单认为是可以在命令行下访问url的一个工具 curl是利用URL语法在命令行方式下工作的开源 文件传输工具,使用curl可以简单实现常见的 get/post请求。 Curl的使用  -X  指定http请求的方法GET POST  PUT DELETE 
 -d   指定要传递的参数 
 


3、CURL 创建索引库

 
curl -XPUT 'http://master:9200/test/' PUT/POST都可以 示例: curl -H "Content-Type: application/json"  -XPOST http://master:9200/test/user/1 -d '{"name" : "jack","age" : 28}' 
PUT和POST的用法区别 
PUT是幂等方法,而POST并不是。所以PUT用于更新操作、 POST用于新增操作比较合适。 说白了用put执行同一条操作原数据会更新,post会创建另一条相同的数据。POST是作用在一个集合资源之上的(/articles), 而PUT操作是作用在一个具体资源之上的(/articles/123),比如说 很多资源使用数据库自增主键作为标识信息,而创建的资源的标识 信息到底是什么只能由服务端提供,这个时候就必须使用POST。 

 
4、查询索引-GET 


根据员工id查询  curl -XGET http://master:9200/test/user/1 
 在任意的查询字符串中添加pretty参数,es可以 得到易于识别的json结果。  检索文档中的一部分,如果只需要显示指定字段 curl -XGET 'http://master:9200/test/user/1?_source=name&pretty'  查询指定索引库指定类型所有数据 curl -XGET http://master:9200/test/user/_search?pretty 
 根据条件进行查询 curl -XGET 'http://master:9200/test/user/_search?q=name:john&pretty=true‘ 或者 curl -XGET 'http://master:9200/test/user/_search?q=name:john&pretty' 

5、DSL查询 


Domain Specific Language领域特定语言 新添加一个文档 curl -H "Content-Type: application/json"  -XPUT http://master:9200/test/user/4/_create -d '{"name":"qiqi","age":17}' 
 
curl -H "Content-Type: application/json" -XGET http://master:9200/test/user/_search d'{"query":{"match":{"name":"qiqi"}}}' 

6、MGET查询

 
使用mget API获取多个文档 先新建一个库 curl -XPUT 'http://master:9200/test2/' curl -H "Content-Type: application/json" -XPOST http://master:9200/test2/user/1 -d '{"name" : "marry","age" : 16}' 
 
curl -H "Content-Type: application/json" -XGET http://master:9200/_mget?pretty -d '{"docs":[{"_index":"test","_type":"user","_id":2,"_source":"name"},{"_index":"te st2","_type":"user","_id":1}]}‘ 

7、HEAD的使用 


如果只想检查一下文档是否存在,你可以 使用HEAD来替代GET方法,这样就只会 返回HTTP头文件 curl -i -XHEAD http://master:9200/test/user/1 
ES更新(1) 
ES可以使用PUT或者POST对文档进行更 新(全部更新),如果指定ID的文档已经存 在,则执行更新操作 注意:执行更新操作的时候 ES首先将旧的文档标记为删除状态 然后添加新的文档 旧的文档不会立即消失,但是你也无法访问 ES会在你继续添加更多数据的时候在后台清 理已经标记为删除状态的文档 


 
8、ES更新


局部更新,可以添加新字段或者更新已有 字段(必须使用POST) curl -H "Content-Type: application/json" -XPOST http://master:9200/test/user/1/_update -d '{"doc":{"name":"baby","age":27}}‘ 

curl  -XGET http://master:9200/test/user/1?pretty 


9、ES删除 


删除操作 curl -XDELETE http://master:9200/test/user/1 curl -XGET http://master:9200/test/user/1 如果文档存在,result属性值为deleted,_version属 性的值+1 如果文档不存在,result属性值为not_found, 但是_version属性的值依然会+1,这个就是 内部管理的一部分,它保证了我们在多个节 点间的不同操作的顺序都被正确标记了 注意:删除一个文档也不会立即生效,它只是被 标记成已删除。Elasticsearch将会在你之后添加 更多索引的时候才会在后台进行删除内容的清理。 

10、ES版本控制 


普通关系型数据库使用的是(悲观并发控制(PCC)) 当我们在修改一个数据前先锁定这一行,然后确保只有读取到数据的 这个线程可以修改这一行数据.  ES使用的是(乐观并发控制(OCC)) ES不会阻止某一数据的访问,然而,如果基础数据在我们读取和写入 的间隔中发生了变化,更新就会失败,这时候就由程序来决定如何处 理这个冲突。它可以重新读取新数据来进行更新,又或者将这一情况 直接反馈给用户。  ES如何实现版本控制(使用es内部版本号)  首先得到需要修改的文档,获取版本(_version)号  curl -XGET http://master:9200/test/user/2  在执行更新操作的时候把版本号传过去  curl -H "Content-Type: application/json" -XPUT http://master:9200/test/user/2?version=1 -d '{"name":"john","age":29}'  curl -H "Content-Type: application/json" -XPOST http://master:9200/test/user/2/_update?version=2 -d '{"doc":{"age":30}}'  如果传递的版本号和待更新的文档的版本号不一致,则会更新失败 
ElasticSearch核心

发布了64 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_39855998/article/details/99406626