美文网首页
4-ES基本概念和CURD操作

4-ES基本概念和CURD操作

作者: 进读万卷书 | 来源:发表于2019-07-12 21:00 被阅读0次
    ES的应用场景

    ES是一个开源的分布式搜索和分析引擎,提供了近实时(1秒内)搜索和聚合两大功能。 广泛应用于搜索,日志管理,安全分析,指标分析,业务分析,应用性能监控等领域。相比于传统数据库,它提供了模糊查询和搜索条件的算分等关系型数据库不擅长的,但在事务性方面,它不如传统数据库。

    前面已经安装好了ES,那么在使用ES之前先了解一下它的基本概念。

    名词 解释
    Index(索引) 索引就像Mysql中的数据库,后面创建的文档数据都属于某个索引,尽量把一些有相似特性文档放到一个文档,这里又有点像传统数据库的表。
    document(文档) 文档是建立索引的基本信息单元。像Mysql中的一行数据,一个文档用JSON表示,可以有不同的字段。
    Filed(字段) 像Mysql中的列,可以直接建立索引进行查询。
    node(节点) 一个ES实例叫一节点,一般一台机器上运行一个实例。
    cluster(集群) 多个节点组成一个集群,集群需要指定唯一名字
    shard(分片) 一个索引可以分成多个分片存到不同的节点里面,一般创建索引时指定分片数量。
    replicas(副本) 防止机器挂掉造成机服务的不可用,每个分片会有一个或多个复制品叫作副本。

    下面的命令在kibana的开发工具上执行。

    1.索引API
    //创建索引
    PUT /users
    
    //查看所有索引信息
    GET /_cat/indices?v
    
    //删除索引
    DELETE /users
    
    2.创建文档
    //创建文档
    PUT /users/_doc/1 
    {
      "name":"wsj",
      "age":20
    }
    //返回结果
    {
      "_index" : "users", //索引名称
      "_type" : "_doc",  //类型
      "_id" : "1",           //文档id
      "_version" : 1,    //版本
      "result" : "created",
      "_shards" : {
        "total" : 2,   //总共2个分片
        "successful" : 1, //一个执行成功,因为只起了一个节点
        "failed" : 0
      },
      "_seq_no" : 0,
      "_primary_term" : 1
    }
    
    //同上面创建文档,id自动生成
    POST /users/_doc
    {
      "name":"wsj2",
      "age":21
    }
    
    
    
    3.查询文档
    //查询id为1的文档
    GET /users/_doc/1
    
    //返回结果
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 1,
      "_seq_no" : 0,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {   //文档内容
        "name" : "wsj",
        "age" : 20
      }
    }
    
    //只查询某些字段,用逗号隔开
    GET /users/_doc/1?_source=name
    //返回结果
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 1,
      "_seq_no" : 0,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "name" : "wsj"
      }
    }
    
    //当字段多时,能够选择包括和排除不要的字段
    GET /users/_doc/1?_source_includes=age&_source_excludes=name
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 1,
      "_seq_no" : 0,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "age" : 20
      }
    }
    
    
    
    4.更新文档
    //已存在的用户
    GET /users/_doc/2
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "2",
      "_version" : 1,
      "_seq_no" : 4,
      "_primary_term" : 2,
      "found" : true,
      "_source" : {
        "name" : "wsj",
        "age" : 20
      }
    }
    
    //更新,可以增加字段,可以更新原来字段的值
    POST users/_update/2
    {
        "doc" : {
            "name" : "wsj3",
            "age":23,
            "gender":"male"
        }
    }
    //再查询
    GET /users/_doc/2
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "2",
      "_version" : 2,
      "_seq_no" : 5,
      "_primary_term" : 2,
      "found" : true,
      "_source" : {
        "name" : "wsj3",
        "age" : 23,
        "gender" : "male"
      }
    }
    
    5.删除文档
    DELETE /users/_doc/1
    

    相关文章

      网友评论

          本文标题:4-ES基本概念和CURD操作

          本文链接:https://www.haomeiwen.com/subject/imvkkctx.html