ElasticSearch之CURL操作

CURL的操作
   curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求。简单的认为是可以在命令行下面访问url的一个工具。在centos的默认库里面是有curl工具的,如果没有请yum安装即可。
    curl
    -X 指定http的请求方法 有HEAD GET POST PUT DELETE
    -d 指定要传输的数据
    -H 指定http请求头信息
    浏览ES服务器
        curl -XGET http://master:9200  <=> 在浏览器中访问
    创建索引库
        curl -XPUT http://master:9200/bigdata_p
        这样就在es中创建了一个索引库bigdata_p
    
    POST和PUT都可以用于创建,二者之间的区别:
        PUT是幂等方法,POST不是。所以PUT用户更新,POST用于新增比较合适。
        ES创建索引库和索引时的注意点
              1)索引库名称必须要全部小写,不能以下划线开头,也不能包含逗号
              2)如果没有明确指定索引数据的ID,那么es会自动生成一个随机的ID,需要使用POST参数
            curl -XPOST http://localhost:9200/bigdata/product/ -d '{"author" : "Doug Cutting"}'
    往索引库中新增数据
        在具体的type里面,添加相关的document
        curl -XPUT http://master:9200/bigdata_p/product/ -d '{"name":"hadoop", "author": "Doug Cutting", "c_version": "2.7.3"}'
    查询某一个索引库中的数据
            查询整个索引库:curl -XGET http://master:9200/bigdata_p/_search?pretty
                    在url后面加上一个pretty则会对返回结果进行格式化,
            查询某一个type:curl -XGET http://master:9200/bigdata_p/product/_search?pretty
            查询具体的一条记录:curl -XGET http://master:9200/bigdata_p/product/1?pretty
        查询一条索引文档中的具体的字段:curl -XGET http://master:9200/bigdata_p/product/1?_source=name&pretty
            如果要查询多个字段,使用","进行隔开。eg.
            curl -XGET http://master:9200/bigdata_p/product/1?_source=name,author&pretty
        获取source所有数据
            curl -XGET http://master:9200/bigdata_p/product/1?_source&pretty
        根据条件进行查询
            curl -XGET http://master:9200/bigdata_p/product/_search?q=name:hbase,hive&pretty
    -------------------        
    ES更新
       ES可以使用PUT或者POST对文档进行更新,如果指定ID的文档已经存在,则执行更新操作
    注意:执行更新操作的时候,ES首先将旧的文档标记为删除状态,然后添加新的文档,旧的文
    档不会立即消失,但是你也无法访问,ES会继续添加更多数据的时候在后台清理已经标记为删
    除状态的文档。
    局部更新
       可以添加新字段或者更新已经存在字段(必须使用POST)
        curl -XPOST http://master:9200/bigdata_p/product/2/_update -d '{"doc":{"c_version": "2.0.0", "publish_time": "2017-03-23"}}'
        查询结果:
        "hits" : [ {
              "_index" : "bigdata_p",
              "_type" : "product",
              "_id" : "2",
              "_score" : 0.30685282,
              "_source" : {
                "name" : "hbase",
                "author" : "apache",
                "c_version" : "2.0.0",
                "publish_time" : "2017-03-23"
              }
            } ]
    普通删除,根据主键删除
       curl -XDELETE http://master:9200/bigdata_p/product/3/
    说明:如果文档存在,es属性found:true,successful:1,_version属性的值+1。
       如果文档不存在,es属性found为false,但是版本值version依然会+1,这个就是内部
    管理的一部分,有点像svn版本号,它保证了我们在多个节点间的不同操作的顺序被正确标记了。
       注意:一个文档被删除之后,不会立即生效,他只是被标记为已删除。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则可以成功执行。
        
        使用文件的方式
            curl -XPOST/PUT http://master:9200/index/type/_bulk --data-binary @path
            比如    
            curl -XPOST 'http://master:9200/bank/account/_bulk --data-binary @/home/uplooking/Documents/accounts.json
        查询结果:
            http://master:9200/bank/_search?pretty
            {
              "took" : 10,    ---->默认取出其中前10条记录
              "timed_out" : false,
              "_shards" : {
                "total" : 5,
                "successful" : 5,
                "failed" : 0
              },
              "hits" : {
                "total" : 1000, ----->总共有1000条记录
                "max_score" : 1.0,
    可以查看一下各个索引库信息
    curl 'http://localhost:9200/_cat/indices?v'
展开阅读全文

没有更多推荐了,返回首页