zoukankan      html  css  js  c++  java
  • 【Elasticsearch学习之二】Elasticsearch Rest风格操作

    环境
      虚拟机:VMware 10
      Linux版本:CentOS-6.5-x86_64
      客户端:Xshell4
      FTP:Xftp4
      jdk8
      elasticsearch-2.2.0

    一、Rest简介
    Representational State Transfer
    一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    REST的操作分为以下几种
      GET:获取对象的当前状态;
      PUT:改变对象的状态;
      POST:创建对象;
      DELETE:删除对象;
      HEAD:获取头信息。


    ES内置的REST接口


    二、curl-rest命令
    curl属于linux命令,可以在命令行下访问url的一个工具,利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求
    curl
      -X 指定http请求的方法
    HEAD GET POST PUT DELETE
      -d 指定要传输的数据

    1、创建索引库:wjy

    [cluster@PCS101 bin]$ curl -XPUT http://196.168.123.101:9200/wjy/
    {"acknowledged":true}
    [cluster@PCS101 bin]$ 

    2、创建类型(表):employee,插入一行记录,即文档document

    #POST不指定ID 会自动生成ID;指定ID,会根据ID,如果存在该ID会更新,不存在就创建

    [cluster@PCS101 bin]$ curl -XPOST http://196.168.123.101:9200/wjy/employee -d '
    > {
    >  "first_name" : "bin",
    >  "age" : 33,
    >  "about" : "I love to go rock climbing",
    >  "interests": [ "sports", "music" ]
    > }'
    {"_index":"wjy","_type":"employee","_id":"AWlv8cAl4hD4em0kzO4U","_version":1,"_shards":{"total":2,"successful":2,"failed":0},"created":true}
      索引库          类型              编号                         版本         分片                                            是否创建成功

    #PUT方式 后面必须指定ID编码,如果重复添加相同编码数据 会失败

    [cluster@PCS101 bin]$ curl -XPUT http://196.168.123.101:9200/wjy/employee/1 -d '
    > {
    >  "first_name" : "god bin",
    >  "last_name" : "pang",
    >  "age" : 42,
    >  "about" : "I love to go rock climbing",
    >  "interests": [ "sports", "music" ]
    > }'
    {"_index":"wjy","_type":"employee","_id":"1","_version":1,"_shards":{"total":2,"successful":2,"failed":0},"created":true} 

    3、增加field:sex

    [cluster@PCS101 bin]$ curl -XPOST http://196.168.123.101:9200/wjy/employee -d '
    > {
    >  "first_name" : "pablo2",
    >  "age" : 33,
    >  "about" : "I love to go rock climbing",
    >  "interests": [ "sports", "music" ],
    >  "sex": "man"
    > }'
    {"_index":"wjy","_type":"employee","_id":"AWlv-tng4hD4em0kzO4W","_version":1,"_shards":{"total":2,"successful":2,"failed":0},"created":true}

    4、获取数据 GET
    (1)根据document的id来获取数据:pretty参数就是用json格式化的方式展示

    [cluster@PCS101 bin]$ curl -XGET http://196.168.123.101:9200/wjy/employee/1?pretty
    {
      "_index" : "wjy",
      "_type" : "employee",
      "_id" : "1",
      "_version" : 1,
      "found" : true,
      "_source" : {
        "first_name" : "god bin",
        "last_name" : "pang",
        "age" : 42,
        "about" : "I love to go rock climbing",
        "interests" : [ "sports", "music" ]
      }
    }

    对比:

    [cluster@PCS101 bin]$ curl -XGET http://196.168.123.101:9200/wjy/employee/1
    {"_index":"wjy","_type":"employee","_id":"1","_version":1,"found":true,"_source":
    {
     "first_name" : "god bin",
     "last_name" : "pang",
     "age" : 42,
     "about" : "I love to go rock climbing",
     "interests": [ "sports", "music" ]
    }}

    (2)根据field来查询数据:_search根据索引查找

    [cluster@PCS101 bin]$ curl -XGET http://196.168.123.101:9200/wjy/employee/_search?q=first_name="bin"
    {"took":18,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":3,"max_score":0.014065012,"hits":[{"_index":"wjy","_type":"employee","_id":"AWlv8cAl4hD4em0kzO4U","_score":0.014065012,"_source":
    {
     "first_name" : "bin",
     "age" : 33,
     "about" : "I love to go rock climbing",
     "interests": [ "sports", "music" ]
    }},{"_index":"wjy","_type":"employee","_id":"AWlv91mF4hD4em0kzO4V","_score":0.01125201,"_source":
    {
     "first_name" : "gob bin",
     "age" : 43,
     "about" : "I love to go rock climbing",
     "interests": [ "sports", "music" ]
    }},{"_index":"wjy","_type":"employee","_id":"1","_score":0.01125201,"_source":
    {
     "first_name" : "god bin",
     "last_name" : "pang",
     "age" : 42,
     "about" : "I love to go rock climbing",
     "interests": [ "sports", "music" ]
    }}]}}

    (3)根据field来查询数据,参数封装起来传进去:match 匹配

    [cluster@PCS101 bin]$ curl -XGET http://196.168.123.101:9200/wjy/employee/_search?pretty -d '
    > {
    >  "query":
    >   {"match":
    >    {"first_name":"bin"}
    >   }
    > }'
    {
      "took" : 10,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "failed" : 0
      },
      "hits" : {
        "total" : 3,
        "max_score" : 0.30685282,
        "hits" : [ {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "AWlv8cAl4hD4em0kzO4U",
          "_score" : 0.30685282,
          "_source" : {
            "first_name" : "bin",
            "age" : 33,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        }, {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "AWlv91mF4hD4em0kzO4V",
          "_score" : 0.19178301,
          "_source" : {
            "first_name" : "gob bin",
            "age" : 43,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        }, {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "1",
          "_score" : 0.19178301,
          "_source" : {
            "first_name" : "god bin",
            "last_name" : "pang",
            "age" : 42,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        } ]
      }
    }

    #对多个field发起查询:multi_match

    [cluster@PCS101 bin]$ curl -XGET http://196.168.123.101:9200/wjy/employee/_search?pretty -d '
    > {
    >  "query":
    >   {"multi_match":
    >    {
    >     "query":"bin",
    >     "fields":["last_name","first_name"],
    >     "operator":"and"
    >    }
    >   }
    > }'
    {
      "took" : 11,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "failed" : 0
      },
      "hits" : {
        "total" : 3,
        "max_score" : 0.09415865,
        "hits" : [ {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "AWlv8cAl4hD4em0kzO4U",
          "_score" : 0.09415865,
          "_source" : {
            "first_name" : "bin",
            "age" : 33,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        }, {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "AWlv91mF4hD4em0kzO4V",
          "_score" : 0.058849156,
          "_source" : {
            "first_name" : "gob bin",
            "age" : 43,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        }, {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "1",
          "_score" : 0.058849156,
          "_source" : {
            "first_name" : "god bin",
            "last_name" : "pang",
            "age" : 42,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        } ]
      }
    }

    (4)多个term对多个field发起查询:bool(boolean),组合查询,must,must_not,should
    #must + must : 交集

    [cluster@PCS101 bin]$ curl -XGET http://196.168.123.101:9200/wjy/employee/_search?pretty -d '
    > {
    >  "query":
    >   {"bool" :
    >    {
    >     "must" : 
    >      {"match":
    >       {"first_name":"bin"}
    >      },
    >     "must" : 
    >      {"match":
    >       {"age":33}
    >      }
    >    }
    >   }
    > }'
    {
      "took" : 5,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "failed" : 0
      },
      "hits" : {
        "total" : 1,
        "max_score" : 0.4339554,
        "hits" : [ {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "AWlv8cAl4hD4em0kzO4U",
          "_score" : 0.4339554,
          "_source" : {
            "first_name" : "bin",
            "age" : 33,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        } ]
      }
    }

    #must +must_not :差集

    [cluster@PCS101 bin]$ curl -XGET http://196.168.123.101:9200/wjy/employee/_search?pretty -d '
    > {
    >  "query":
    >   {"bool" :
    >    {
    >     "must" : 
    >      {"match":
    >       {"first_name":"bin"}
    >      },
    >     "must_not" : 
    >      {"match":
    >       {"age":33}
    >      }
    >    }
    >   }
    > }'
    {
      "took" : 7,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "failed" : 0
      },
      "hits" : {
        "total" : 2,
        "max_score" : 0.19178301,
        "hits" : [ {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "AWlv91mF4hD4em0kzO4V",
          "_score" : 0.19178301,
          "_source" : {
            "first_name" : "gob bin",
            "age" : 43,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        }, {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "1",
          "_score" : 0.19178301,
          "_source" : {
            "first_name" : "god bin",
            "last_name" : "pang",
            "age" : 42,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        } ]
      }
    }

    #must+must_not 查询first_name=bin的,或者年龄在20岁到33岁之间的

    [cluster@PCS101 bin]$ curl -XGET http://196.168.123.101:9200/wjy/employee/_search?pretty -d '
    > {
    >  "query":
    >   {"bool" :
    >    {
    >    "must" :
    >     {"term" : 
    >      { "first_name" : "bin" }
    >     }
    >    ,
    >    "must_not" : 
    >     {"range":
    >      {"age" : { "from" : 20, "to" : 33 }
    >     }
    >    }
    >    }
    >   }
    > }'
    {
      "took" : 6,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "failed" : 0
      },
      "hits" : {
        "total" : 2,
        "max_score" : 0.19178301,
        "hits" : [ {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "AWlv91mF4hD4em0kzO4V",
          "_score" : 0.19178301,
          "_source" : {
            "first_name" : "gob bin",
            "age" : 43,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        }, {
          "_index" : "wjy",
          "_type" : "employee",
          "_id" : "1",
          "_score" : 0.19178301,
          "_source" : {
            "first_name" : "god bin",
            "last_name" : "pang",
            "age" : 42,
            "about" : "I love to go rock climbing",
            "interests" : [ "sports", "music" ]
          }
        } ]
      }
    }

    #must_not+must_not  : 并集

    [cluster@PCS101 bin]$ curl -XGET http://196.168.123.101:9200/wjy/employee/_search?pretty -d '
    > {
    >  "query":
    >   {"bool" :
    >    {
    >     "must_not" : 
    >      {"match":
    >       {"first_name":"bin"}
    >      },
    >     "must_not" : 
    >      {"match":
    >       {"age":33}
    >      }
    >    }
    >   }
    > }'
    {
      "took" : 5,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "failed" : 0
      },
      "hits" : {
        "total" : 0,
        "max_score" : null,
        "hits" : [ ]
      }
    }

    (5)删除

    curl -XDELETE http://196.168.123.101:9200/test2/

    (6)设置

    #设置备份数
    curl -XPUT 'http://196.168.123.101:9200/test2/' -d'{"settings":{"number_of_replicas":2}}'
    
    #设置分片数 备份数
    curl -XPUT 'http://196.168.123.101:9200/test3/' -d'{"settings":{"number_of_shards":3,"number_of_replicas":3}}'
  • 相关阅读:
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1553 数字反转(升级版)
    8.4 确定两个日期之间的月份数或年数
    (Java实现) 洛谷 P1553 数字反转(升级版)
  • 原文地址:https://www.cnblogs.com/cac2020/p/10515423.html
Copyright © 2011-2022 走看看