热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ES7.9.0初探之索引创建与数据的CURD

上一篇已经把elasticsearch与kibana环境搭建好,但是还没有进行具体的操作,今天咱们就搞起来!!1.环境说明

上一篇已经把elasticsearch与kibana环境搭建好,但是还没有进行具体的操作,今天咱们就搞起来!!


1.环境说明


名称版本
docker19.03
elasticsearch7.9.0
kibana7.9.0

2.基本概念

我要抄点内容给各位大爷瞧瞧了。


含义备注
cluster集群,Elasticsearch 集群由一个或多个节点组成,可通过其集群名称进行标识。通常这个 Cluster 的名字是可以在 Elasticsearch 里的配置文件中设置的。
node节点,单个 Elasticsearch 实例。 一个集群由一个或多个 node 组成。
index索引,文档的集合。每个index可以包括一个或者多个documents相当于数据库的概念
type类型,是文档的逻辑容器。由于一些原因,在 Elasticsearch 6.0 以后,一个 Index 只能含有一个 type。在默认的情况下是 _doc。在未来8.0的版本中,type 将被彻底删除相当于关系型数据库中的表
documentElasticsearch 是面向文档的,索引或搜索的最小数据单元是文档。文档通常是JSON格式的。相当于行
shard由于 Elasticsearch 是一个分布式搜索引擎,因此索引通常会拆分为分布在多个节点上的称为分片的元素。 Elasticsearch 自动管理这些分片的排列。 它还根据需要重新平衡分片,因此用户无需担心细节。
replica默认情况下,Elasticsearch 为每个索引创建一个主分片和一个副本。这意味着每个索引将包含一个主分片,每个分片将具有一个副本。
mapping用于定义一个索引(index)的某个类型(type)的数据的结构。在默认配置下,ES可以根据插入的数据自动地创建type及其mapping。类似于传统关系型数据中table的schema

我有点懒,不想抄了。Elasticsearch中的一些重要概念:cluster, node, index, document, shards及replica


3.实战操作

光说不练假把式,那就真刀真枪实战!
之前环境以及搭建好,那么我们就打开www.localhost:5601进入kibana的操作台吧。


3.1 创建、获取index

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"}}}
}

从这里我们可以看到一些基本的信息:


  • 该index没有别名
  • mapping信息为空,(毕竟暂时还没有定义schema)
  • index创建时间
  • uuid
  • 分片数量 这里只有1个
  • 副本数量 也只有1个
  • version

3.2 创建mapping

我们需要定义数据的格式,那么

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"}}}}
}

3.3 插入数据

由于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,即是第一个版本。


3.4 修改指定id的数据

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了。


3.5 删除指定Id的数据

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对映的数据了。


4.总结


  • ES的概念
  • 通过rest实现对数据的CURD
    这里的操作都比较简单,就是简单的curd,对我们来说,感觉似乎与关系型数据库差别不是很大,只是用rest替代了sql语句,完全没有感受到ES的强大。下一篇,继续深入操作,感受ES的魅力。

推荐阅读
author-avatar
haijiaoxu_512
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有