首页 > 编程知识 正文

中国花鸟画入门篇(入门篇)

时间:2023-05-06 17:46:26 阅读:103757 作者:531

00-1010 1.REST简介

弹性搜索

索引(索引库)类型(类型)文档字段(字段)

REST的全称是表征状态转移。它是软件的架构风格,不是标准,而是一套设计原则和约束。主要用于客户端-服务器交互类的软件。基于这种风格设计的软件可以更简单,更有层次,更容易实现缓存等机制。

其实说白了就是类似HTTP访问,和HTTP很像。操作REST : GET:获取对象的当前状态;PUT:改变对象的状态;POST:创建对象;删除:删除对象;标题:获取标题信息。

2.休息具体操作说明

3.ES内置REST接口

REST

curl是一个开源的文件传输工具,通过使用url语法在命令行模式下工作,使用curl可以轻松实现常见的get/post请求。简单地认为它是一个可以在命令行下访问url的工具。centos的默认库中有curl工具。如果你不要求百胜安装,你可以。

Curl -X用HEAD GET POST PUT DELETE指定http的请求方法-d指定要传输的数据-H指定http请求头信息。

使用curl创建索引库,创建索引CURL创建索引库CURL-xput http://:9200/index _ name/put或POST创建示例: CURL-xput ' 3358 localhost 3360 9200/big data '

创建索引

curl-H ' Content-type : application/JSON '-XPOST ' http://localhost :9200/big data/product/1 '-d ' { name ' : ' Hadoop ',Author' :' Doug cutting ',' core' : ['HDFS ',' Mr ',' Yarn'],' latest _ version' : 3.0} '使用CURL的PUT和POST操作是幂等方法,但POST不是。因此,PUT用户更新和POST进行添加更为合适。PUT和DELETE操作是幂等的。所谓幂等意味着无论执行多少次运算,结果都是一样的。比如你用PUT修改一篇文章,然后做同样的操作,每次操作后的结果没什么不同,DELETE也一样。开机自检操作不是幂等的,例如常见的开机自检重复加载问题:当我们多次发出相同的POST请求时,结果是创建了大量的资源。还需要注意的是,您可以使用POST或PUT来创建。

区别在于POST作用于一组资源(/articles),而PUT操作作用于一个特定的资源(/articles/123)。比如很多资源使用数据库自增主键作为标识信息,所以此时需要PUT。当创建的资源的标识信息只能由服务器提供时,此时必须使用POST。为es创建索引库和索引时的注意事项1)索引库的名称必须全部为小写,并且不能以下划线开头或包含逗号2)如果没有明确指定索引数据的ID,es将自动生成一个随机ID,并且POST参数curl-xpost http://localhost 33609200/big data/product/-d ' { author ' 3360 '

如果想确保创建的是全新的数据1:使用随机ID(POST模式)2:添加参数curl-xpost 3358 localhos t :9200/big data/product/2?op _ true=create-d ' { name ' : ' hbase ' } ' curl-xpost 3358 localhost :9200/big data/product/3/_ create-d ' { name ' 3360 ' hive ' } '如果新文档创建成功,如果存在同名文件,ES将返回AlreadyExistsException。如果在以前版本的中成功创建了新文档,弹性搜索将返回公共元数据和HTTP反馈代码201 Created。如果有同名文件,Elasticsearch将返回一个HTTP反馈代码409 Conflict。

CURL使用的查询所有查询所有基于产品ID的GET查询

curl -XGET http://localhost:9200/bigdata/product/1?pretty 在任意的查询url中添 加pretty参数,es可以获取更易识别的json结果。 检索文档中的一部分,显示特定的字段内容 curl -XGET http://loca lhost:9200/bigdata/product/1?source=name,author&pretty' source curl -XGET 'http://localhost:9200/bigdata/product/1/source?pretty' 查询所有 curl -XGET 'http://localhost:9200/bigdata/prod uct/_search?pretty' 根据条件进行查询 curl -XGET 'http://localhost:9200/bigdata/product/_search?q=name:hbas e&pretty'

CURL使用之ES更新&删除

ES更新 ES可以使用PUT或者POST对文档进行更新,如果指定ID的文档已经存在,则执行更新操作 注意:执行更新操 作的时候,ES首先将旧的文档标记为删除状态,然后添加新的文档,旧的文 档不会立即消失,但是你也无法访问, ES会继续添加更多数据的时候在后台清理已经标记为删 除状态的文档。 局部更新 可以添加新字段或者更新已经存在 字段(必须使用POST)

curl -XPOST http://localhost:9200/bigdata/product/1/_update -d '{"doc":{"name" : "apache- hadoop"}}'

普通删除,根据主键删除 curl -XDELETE http://localhost:9200/bigdata/product/3/ 说明:如果文档存在,es属性 found:true,successful:1,_version属性的值+1。 如果文档不存在,es属性found为false,但是版本值version依 然会+1,这个就是内部 管理的一部分,有点像svn版本号,它保证了我们在多个节点间的不同操作的顺序被正确标记 了。 注意:一个文档被删除之后,不会立即生效,他只是被标记为已删除。ES将会在你之后添加 更多索引的时候才 会在后台进行删除。

CURL使用之ES批量操作-bulk

Bulk api可以帮助我们同时执行多个请求 格式: action:[index|create|update|delete] metadata:index,type,id request body:source(删除操作不需要) {action:{metadata}}n {request body}n {action:{metadata}}n {request body}n create和index的区别 如果数据存在,使用create操作失败,会提示文档已经存在,使用index则可以成功执 行。 使用文件的方式 vi reqeusts curl -XPOST/PUT http://localhost:9200/index/type/_bulk --data-binary @path 比如 curl -XPOST 'http://localhost:9200/bank/accout/_bulk?pretty' --data-binary "@data/accounts.json"

accounts数据说明.txt

银行客户账号信息文档,文档schema如下 { "account_number": 0, "balance": 16623, "firstname": "Bradshaw", "lastname": "Mckenzie", "age": 29, "gender": "F", "address": "244 Columbus Place", "employer": "Euron", "email": "bradshawmckenzie@euron.com", "city": "Hobucken", "state": "CO" }

可以查看一下各个索引库信息 curl 'http://localhost:9200/_cat/indices?v'

Bulk请求可以在URL中声明/index /index/_type Bulk一次最大处理多少数据量 Bulk会把将要处理的数据载入内存 中,所以数据量是有限制的 最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你 的索引以及搜索的负载 一般建议是1000~5000个文档,如果你的文档很大,可以适当减少队列,大小建议是 5~15MB,默认不能超过100M,可以在es的配置文件中修改这个值 http.max_content_length:100mb

CURL使用之ES版本控制

ES版本控制 普通关系型数据库使用的是(悲观并发控制(PCC)) 当我们在读取一个数据前先锁定这一行,然后确 保只有读取到数据的这个线程可以修改 这一行数据 ES使用的是(乐观并发控制(OCC)) ES不会阻止某一数据的访 问,然而,如果基础数据在我们读取和写入的间隔中发生了变 化,更新就会失败,这时候就由xwdjy决定如何处理 这个冲突。它可以重新读取新数据来进 行更新,又或者将这一情况直接反馈给用户。 ES如何实现版本控制(使用es内 部版本号)

1:首先得到需要修改的文档,获取版本(version)

curl -XGET http://localhost:9200/bigdata/product/1

2 、

curl -XPUT http://localhost:9200/bigdata/product/1?version=1 -d '{"name":"hadoop","version":3}'

curl -XPOST http://localhost:9200/bigdata/product/1/update?version=3 -d '{"doc":{"name":"apache hadoop","latest_version": 2.6}}'(部分更新)

3、如果传递的版本号和待更新的文档的版本 号不一致,则会更新失败 ES如何实现版本控制(使用外部版本号) 如果你的数据库已经存在了版本号,或者是可以代 表版本的时间戳。这时就可以在es的查 询url后面添加version_type=external来使用这些号码。 注意:版本号码必须 要是大于0小于9223372036854775807(Java中long的最大正值)的 整数。

es在处理外部版本号的时候,它不再检查version version是否比 指定的数值小,如果小,则请求成功。 example:

curl -XPUT 'http://localhost:9200/bigdata/product/20?version =10&version_type=external' -d '{"name": "flink"}'

注意:此处url前后的引号不能省略,否则执行的时候会报错

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。