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}}'
  • 相关阅读:
    2、Qt Project之鼠标事件监控
    1、Qt Project之基本文件打开与保存
    Qt界面设计基础
    基于Keil软件的MCU环境搭建
    一次性将word中的数字和字母全部改为“Times New Roman”字体
    PAT 1004 Counting Leaves
    PAT 1003 Emergency
    DevC++ 控制台项目初始代码修改方法
    Win7在命令提示符(cmd.exe)中如何进行复制、粘贴工作
    VMware虚拟机如何在后台运行,后台运行怎么设置其在电脑右下角显示托盘图标
  • 原文地址:https://www.cnblogs.com/cac2020/p/10515423.html
Copyright © 2011-2022 走看看