4-ES基本概念和CURD操作

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操作)