本文主要是ElasticSearch5.6.1索引、类型、文档的增删查改--利用RESTful接口和Kibana可视化工具。
关于ElasticSearch5.6.1的环境搭建,请参考我另一篇博文。
ElasticSearch5.6.1环境搭建与运行
http://blog.csdn.net/deliciousion/article/details/78055724
有关ElasticSearch的介绍和一些基本概念,请参阅我的另一篇博文。
ElasticSearch介绍和基本概念http://blog.csdn.net/deliciousion/article/details/78050251
有关ElasticSearch的可视化工具Kibana介绍与安装,请参阅我的另一篇博文。
Kibana5.6.1的环境塔建与运行
http://blog.csdn.net/deliciousion/article/details/78057459
ElasticSearch是一个搜索引擎,但同时也作数据存储。但ElasticSearch里面的概念可能跟我们以前接触的关系型数据库很不一样。
相关概念在关系型数据库和ElasticSearch中的对应关系
关系型数据库 |
ElasticSearch |
数据库Database |
索引Index,支持全文检索 |
表Table |
类型Type |
数据行Row |
文档Document,但不需要固定结构,不同文档可以具有不同字段集合 |
数据列Column |
字段Field |
模式Schema |
映像Mapping |
所以这里所说的索引的增删查改,就相当于“数据库Schema”的增删查改。
对于ElasticSearch的索引操作,不管借助什么工具与命令,主要是使用它提供的RESTful接口。
所以有必要对RESTful接口进行简单介绍。
演示过程中我会对每种操作给出两种方法,一个是curl命令的操作,一个是Kibana可视化工具的操作。
有关curl命令的介绍与使用,可参阅我的另一篇博文
强大的curl命令的介绍和一般用法
http://blog.csdn.net/deliciousion/article/details/78062521
下面从这几个方面讲解:
1.ElasticSearch的RESTful接口。
2.如果在curl和Kibana中使用RESTful接口。
3.利用curl和Kibana对ElasticSearch的索引进行增删查改。
4.利用curl和Kibana对ElasticSearch的类型和文档进行增删查改。
1.ElasticSearch的RESTful接口
REST(Representational State Transfer)意即“表现层状态转化”,RESTful是目前流行的一种互联网软件架构,具有结构清晰、符合标准、易于理解、扩展方便等特点,这种架构下的每一个URI代表一种资源,客户端通过GET(获取资源)、POST(新建或更新资源)、PUT(更新资源)、DELETE(删除资源)方式来对服务器端资源进行操作。
2.如果在curl和Kibana中使用RESTful接口
我们可以利用curl的 -X的选项来使用RESTful接口。
比如下面的命令,就是在ElasticSearch中利用RESTful的PUT方法创建了一个索引,我们先抛开语法,后面会讲。
curl -X PUT http://localhost:9200/school
上面的方法是用命令行的方式,大家在学习或者使用过程中,如果只用ElasticSearch,那么这种方式应该是比较方便的。
另外一种方法就是在Kibana中使用RESTful接口,非常方便,不但可以把输入的命令保存下来,还可以写注释,输入的时候还有补全的功能,对初学者来说,十分便利。
下面是kibana5.6.1的界面。在左边菜单的Dev Tools(开发工具)中,我们可以使用RESTful接口。
进入Dev Tools(开发工具),我们可以看到Console(控制台)输入框,这里可以输入多个RESTful请求命令。并且允许添加注释。
点击运行后,就可以在右边看到运行的结果了。
在上面的Kibana的演示中,我们同样在ElasticSearch中添加了索引school,但请求命令简单了许多,但其实是一样的,只是在Kibana中,我们不需要使用主机名和端口了。
3.利用curl和Kibana对ElasticSearch的索引进行增删查改
3.1创建索引
单纯创建索引很简单
只需要一个索引名就可以了。
curl
genfumihirosAir:~ smallruan$ curl -X PUT http://127.0.0.1:9200/school
{"acknowledged":true,"shards_acknowledged":true,"index":"school"}
这里插入一个小知识点,运行的结果都是以JSON格式返回的,默认是不带格式输出,这样对我们来说不直观。
如果我们在请求URL的时候加上“?pretty”那么结果就会以缩进的形式返回,看起来很直观。效果如下,所以后面演示,通通加入这个“?pretty”。
Kibana中输入不需要添加?pretty,也会自动缩进。
genfumihirosAir:~ smallruan$ curl -X PUT http://127.0.0.1:9200/school?pretty
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "school"
}
Kibana
#添加school索引
PUT school
返回结果其实与curl无异。
如果添加不成功会有错误信息,比如下面重复添加。
3.2 查询索引
通过GET请求方法查询刚刚添加的索引
curl
genfumihirosAir:~ smallruan$ curl -X GET http://127.0.0.1:9200/school?pretty
{
"school" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"creation_date" : "1506151277638",
"number_of_shards" : "5",
"number_of_replicas" : "1",
"uuid" : "LueU3RqxRtSaCvB4QPxaSg",
"version" : {
"created" : "5060199"
},
"provided_name" : "school"
}
}
}
}
Kibana
#获取school索引
GET school
从返回的结果我们可以观察到该索引的“number_ofshards”分片数、“number_of_replicas”副本数,等一系列的索引重要信息。
通过DELETE请求方法删除刚刚添加的索引
crul
genfumihirosAir:~ smallruan$ curl -X DELETE http://127.0.0.1:9200/school?pretty
{
"acknowledged" : true
}
再通过GET请求方法查询刚刚删除的索引,会报状态码404,表示索引找不到。
genfumihirosAir:~ smallruan$ curl -X GET http://127.0.0.1:9200/school?pretty
{
"error" : {
"root_cause" : [
{
"type" : "index_not_found_exception",
"reason" : "no such index",
"resource.type" : "index_or_alias",
"resource.id" : "school",
"index_uuid" : "_na_",
"index" : "school"
}
],
"type" : "index_not_found_exception",
"reason" : "no such index",
"resource.type" : "index_or_alias",
"resource.id" : "school",
"index_uuid" : "_na_",
"index" : "school"
},
"status" : 404
}
kibana
#删除school索引
DELETE school
4.利用curl和Kibana对ElasticSearch的类型和文档进行增删查改
上一节,我们添加了索引(数据库),这一节我们来添加类型(表)和文档(记录或数据)。
4.1 添加类型并指定字段。
添加类型,相当于添加表,我们还要添加表的字段信息。
下面添加一个course类型,course类型下有两个字段,course_name课程名,creditI学分。借助_mapping内部命令。表示定义字段的映射关系。
其它,PUT跟POST都可以添加。
curl
curl -XPUT "http://127.0.0.1:9200/school/course/_mapping" -H 'Content-Type: application/json' -d'
{
"properties": {
"course_name": {"type":"text"},
"credit": {"type":"integer"}
}
}'
kibana
#添加课程表类型并添加字段信息
PUT school/course/_mapping
{
"properties": {
"course_name": {"type":"text"},
"credit": {"type":"integer"}
}
}
4.2 查看类型及字段信息
通过查看索引信息可以,看到刚才添加的类型和字段信息。如下红框内容所示
kibana
现在表添加后并没有数据,我们还要为里面插入数据。
现在我们插入两条数据
我们既可以利用PUT也可以利用POST,PUT要指定文档ID,POST可以用UUID自动生成一个文档ID
curl
curl -XPOST "http://127.0.0.1:9200/school/course" -H 'Content-Type: application/json' -d'
{
"name": "数学",
"credit":"4"
}'
curl -XPOST "http://127.0.0.1:9200/school/course" -H 'Content-Type: application/json' -d'
{
"name": "英语",
"credit":"3"
}'
kibana
#添加两条记录到course课程表
POST school/course
{
"name": "数学",
"credit":"4"
}
POST school/course
{
"name": "英语",
"credit":"3"
}
通过下面的查询URL,可以查到刚才添加的两条数据。
通过下面的GET命令,加上一个特殊的内部_search命令,通常带_开头的都是内部定义的。比如很多默认字段也是以_下划线开头的。
最后如果会用kibana,也可以真接在Management管理中添加索引,然后在Discover发现 中查看数据。具体步骤如下。
[GET/POST/PUT/DELETE]
ElasticSearch的语句包括可能的如下几个部分: