上一篇已经把elasticsearch与kibana环境搭建好,但是还没有进行具体的操作,今天咱们就搞起来!!
名称 | 版本 |
---|---|
docker | 19.03 |
elasticsearch | 7.9.0 |
kibana | 7.9.0 |
我要抄点内容给各位大爷瞧瞧了。
含义 | 备注 | |
---|---|---|
cluster | 集群,Elasticsearch 集群由一个或多个节点组成,可通过其集群名称进行标识。通常这个 Cluster 的名字是可以在 Elasticsearch 里的配置文件中设置的。 | |
node | 节点,单个 Elasticsearch 实例。 一个集群由一个或多个 node 组成。 | |
index | 索引,文档的集合。每个index可以包括一个或者多个documents | 相当于数据库的概念 |
type | 类型,是文档的逻辑容器。由于一些原因,在 Elasticsearch 6.0 以后,一个 Index 只能含有一个 type。在默认的情况下是 _doc。在未来8.0的版本中,type 将被彻底删除 | 相当于关系型数据库中的表 |
document | Elasticsearch 是面向文档的,索引或搜索的最小数据单元是文档。文档通常是JSON格式的。 | 相当于行 |
shard | 由于 Elasticsearch 是一个分布式搜索引擎,因此索引通常会拆分为分布在多个节点上的称为分片的元素。 Elasticsearch 自动管理这些分片的排列。 它还根据需要重新平衡分片,因此用户无需担心细节。 | |
replica | 默认情况下,Elasticsearch 为每个索引创建一个主分片和一个副本。这意味着每个索引将包含一个主分片,每个分片将具有一个副本。 | |
mapping | 用于定义一个索引(index)的某个类型(type)的数据的结构。在默认配置下,ES可以根据插入的数据自动地创建type及其mapping。 | 类似于传统关系型数据中table的schema |
我有点懒,不想抄了。Elasticsearch中的一些重要概念:cluster, node, index, document, shards及replica
光说不练假把式,那就真刀真枪实战!
之前环境以及搭建好,那么我们就打开www.localhost:5601进入kibana的操作台吧。
PUT yytest
就是这么简单,这样就创建好了一个index。我们可以查看一下这个是怎样的一个index。
GET yytest
这样就会得到如下的反问结果
{
"yytest" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"creation_date" : "1603977464891",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "QNt1WMRMQ3qi-3JjHs9ttA",
"version" : {
"created" : "7090099"
},
"provided_name" : "yytest"
}
}
}
}
从这里我们可以看到一些基本的信息:
我们需要定义数据的格式,那么
POST yytest/_mapping?pretty
{
"person":{
"name":{
"type": "text"
},
"age":{
"type":"integer"
},
"birthday":{
"type":"date",
"index":false
}
}
}
创建完成后就会得到如下的反馈:
{
"acknowledged":true
}
那么创建好的mapping到底是什么样的呢?查看一下好了
GET yytest/_mapping?pretty
即
{
"yytest" : {
"mappings" : {
"properties" : {
"age" : {
"type" : "integer"
},
"birthday" : {
"type" : "date",
"index" : false
},
"name" : {
"type" : "text"
}
}
}
}
}
由于7.0以后的版本,type默认是_doc,且只有一个,因此在语句中不需要声明type
POST yytest/_doc
{
"name":"zhangsan",
"age":23,
"birthday":"1998-08-28"
}
点击执行,可以得到如下的结果
{
"_index" : "yytest",
"_type" : "_doc",
"_id" : "PpQHiXUBTpZvBmMgKPhT",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 2,
"_primary_term" : 1
}
我们可以根据id查看插入数据的详细信息
GET yytest/_doc/PpQHiXUBTpZvBmMgKPhT
得到的结果是
{
"_index" : "yytest",
"_type" : "_doc",
"_id" : "PpQHiXUBTpZvBmMgKPhT",
"_version" : 1,
"_seq_no" : 2,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "lisi",
"age" : 25,
"birthday" : "1995-08-18"
}
}
注意看,这里的name值是lisi,而且_version的值是1,即是第一个版本。
PUT yytest/_doc/PpQHiXUBTpZvBmMgKPhT
{
"name":"lilaosi"
}
执行完成后,我们可以得到如下的结果
{
"_index" : "yytest",
"_type" : "_doc",
"_id" : "PpQHiXUBTpZvBmMgKPhT",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 3,
"_primary_term" : 1
}
从返回结果我们可以看到,version值已经由原来的1变成了2,result的值是updated。那我们再看一下更新完的结果是怎么样的
GET yytest/_doc/PpQHiXUBTpZvBmMgKPhT
得到的结果是
{
"_index" : "yytest",
"_type" : "_doc",
"_id" : "PpQHiXUBTpZvBmMgKPhT",
"_version" : 2,
"_seq_no" : 3,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "lilaosi"
}
}
可以看到,原来的数据已经被update了,现在的数据只剩下name的值为lilaosi了。
DELETE yytest/_doc/PpQHiXUBTpZvBmMgKPhT
执行上面的rest请求后,可以得到如下结果
{
"_index" : "yytest",
"_type" : "_doc",
"_id" : "PpQHiXUBTpZvBmMgKPhT",
"_version" : 4,
"result" : "deleted",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 5,
"_primary_term" : 1
}
此时再去搜索该id的数据,得到的结果是
{
"_index" : "yytest",
"_type" : "_doc",
"_id" : "PpQHiXUBTpZvBmMgKPhT",
"found" : false
}
已经无法找到当前id对映的数据了。