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
网友评论