ES003-CURL使用

来源:互联网 发布:怎么经营淘宝店铺 编辑:程序博客网 时间:2024/06/03 21:06
1、CURL简介
简单认为是可以在命令行下访问url的一个工具,curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求。

curl  后面跟的参数:
     -x  指定http请求的方法     HEAD  GET POST  PUT DELETE
     -d   指定要传输的数据


2、CURL创建索引库
curl -XPUT http://localhost:9200/jf

说明: PUT/POST都可以
3、CURL创建索引-PUT/POST
PUT和POST的用法区别
PUT是幂等方法,POST不是。所以PUT用于更新、POST用于新增比较合适。
PUT,DELETE操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如我用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有不同,DELETE也是一样。
POST操作不是幂等的,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建出了若干的资源。
还有一点需要注意的就是,创建操作可以使用POST,也可以使用PUT,区别在于POST是作用在一个集合资源之上的(/articles),而PUT操作是作用在一个具体资源之上的(/articles/123),再通俗点说,如果URL可以在客户端确定,那么就使用PUT,如果是在服务端确定,那么就使用POST,比如说很多资源使用数据库自增主键作为标识信息,而创建的资源的标识信息到底是什么只能由服务端提供,这个时候就必须使用POST。

#创建索引库
curl -XPUT 'http://localhost:9200/jf/ware_info/100' -d '{"id":"201","wareCode":"23412","wareName":"50yuan","kind":"huafei","marketValue":20,"countValue":19}'
curl -XPUT 'http://localhost:9200/jf/ware_info/101' -d '{"id":"202","wareCode":"23414","wareName":"60yuan","kind":"huafei","marketValue":200,"countValue":200}'
curl -XPUT 'http://localhost:9200/jf/ware_info/103' -d '{"id":"203","wareCode":"23415","wareName":"70yuan","kind":"huafei","marketValue":2000,"countValue":2000}'

curl -XPUT 'http://localhost:9200/jf/ware_info/200' -d '{"id":"204","wareCode":"3000","wareName":"30liuliang","kind":"liuliang","marketValue":3000,"countValue":3000}'
curl -XPUT 'http://localhost:9200/jf/ware_info/201' -d '{"id":"205","wareCode":"3001","wareName":"40liuliang","kind":"liuliang","marketValue":4000,"countValue":4000}'
curl -XPUT 'http://localhost:9200/jf/ware_info/203' -d '{"id":"206","wareCode":"3002","wareName":"50liuliang","kind":"liuliang","marketValue":5000,"countValue":5000}'



注意事项:ES创建索引时注意
索引库名称必须要全部小写,不能以下划线开头,也不能包含逗号
如果没有明确指定索引数据的ID,那么es会自动生成一个随机的ID,需要使用POST参数
curl -XPOST 'http://localhost:9200/test/stu_info' -d '{"name":"zs","age":20}'
如果想要确定我们创建的都是全新的内容

1:使用自增ID
2:在url后面添加参数
     curl -XPUT http://localhost:9200/jf/emp/2?op_type=create -d '{"name":"flxy","age":25}'
     curl -XPUT http://localhost:9200/jf/emp/2/_create -d '{"name":"flxy","age":25}'
如果成功创建了新的文档,Elasticsearch将会返回常见的元数据以及201 Created的HTTP反馈码。而如果存在同名文件,Elasticsearch将会返回一个409 Conflict的HTTP反馈码


4、CURL查询索引-GET
4.1 根据id查询
[root@mycluster elasticsearch-1.4.4]# curl -XGET 'http://localhost:9200/jf/ware_info/200?pretty'
{
  "_index" : "jf",
  "_type" : "ware_info",
  "_id" : "200",
  "_version" : 1,
  "found" : true,
  "_source":{"ware_code":3000,"ware_name":"30liuliang","kind":"liuliang"}
}
4.2 在任意的查询字符串中添加pretty参数,es可以得到易于识别的json结果。
curl后添加-i 参数,这样你就能得到反馈头文件
[root@mycluster elasticsearch-1.4.4]# curl -i 'http://localhost:9200/jf/ware_info/200?pretty'
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 175

{
  "_index" : "jf",
  "_type" : "ware_info",
  "_id" : "200",
  "_version" : 1,
  "found" : true,
  "_source":{"ware_code":3000,"ware_name":"30liuliang","kind":"liuliang"}
}

4.3 检索文档中的一部分,如果只需要显示指定字段,
     curl -XGET http://localhost:9200/jf/ware_info/200?_source=ware_code,ware_name&pretty

4.4 如果只需要source的数据
 [root@mycluster elasticsearch-1.4.4]# curl -XGET http://localhost:9200/jf/ware_info/200/_source
{"ware_code":3000,"ware_name":"30liuliang","kind":"liuliang"}

4.5 查询所有
     curl -XGET http://localhost:9200/jf/ware_info/_search
你可以再返回的 hits 中发现我们录入的文档。搜索会默认返回最前的10个数值。

4.6 CURL 查询索引-GET
curl -XGET http://localhost:9200/jf/ware_info/_search?q=ware_name:50yuan

4.7 ES使用DSL查询 
Domain Specific Language 领域特定语言

curl -XGET http://localhost:9200/jf/ware_info/_search -d '{"query":{"match":{"ware_name":"50yuan"}}}'


备注:数据格式化后的效果
{  "query": {    "match": {      "ware_name": "50yuan"    }  }}
5、ES更新操作
4.1 ES可以使用PUT或者POST对文档进行更新,如果指定ID的文档已经存在,则执行更新操作注意:执行更新操作的时候ES首先将旧的文档标记为删除状态然后添加新的文档旧的文档不会立即消失,但是你也无法访问ES会在你继续添加更多数据的时候在后台清理已经标记为删除状态的文档
4.2 局部更新,可以添加新字段或者更新已有字段(必须使用POST)
curl -XPOST http://localhost:9200/jf/ware_info/200/_update -d '{"doc":{"ware_info":"xxxxxxx","kind":"yyyyyy"}}'
6、ES删除操作
curl -XDELETE http://localhost:9200/test/stu_info/4/如果文档存在,es会返回200 ok的状态码,found属性值为true,_version属性的值+1如果文档不存在,es会返回404 Not Found的状态码,found属性值为false,但是_version属性的值依然会+1,这个就是内部管理的一部分,它保证了我们在多个节点间的不同操作的顺序都被正确标记了注意:删除一个文档也不会立即生效,它只是被标记成已删除。Elasticsearch将会在你之后添加更多索引的时候才会在后台进行删除内容的清理。
通过查询API删除指定索引库下指定类型下的数据curl -XDELETE 'http://localhost:9200/test/stu_info/_query?q=user:kimchy'curl -XDELETE 'http://localhost:9200/test/stu_info/_query' -d '{    "query" : {        "term" : { "user" : "kimchy" }    }}'
7、ES批量操作
与mget类似,bulk API可以帮助我们同时执行多个请求格式:action:index/create/update/deletemetadata:_index,_type,_idrequest body:_source(删除操作不需要)          { action: { metadata }}\n          { request body        }\n          { action: { metadata }}\n          { request body        }\n使用curl -XPOST -d 时注意,不能直接在json字符串中添加\n字符,应该按回车create 和index的区别如果数据存在,使用create操作失败,会提示文档已经存在,使用index则可以成功执行。使用文件的方式vi requests curl  -XPOST/PUT localhost:9200/_bulk --data-binary @request;bulk请求可以在URL中声明/_index 或者/_index/_typebulk一次最大处理多少数据量bulk会把将要处理的数据载入内存中,所以数据量是有限制的最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M

0 0
原创粉丝点击