ElasticSearch5.6.1索引、类型、文档的增删查改--利用RESTful接口和Kibana可视化工具

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/deliciousion/article/details/78068059

本文主要是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请求命令。并且允许添加注释。

当我们把焦点和光标定在某条RESTful请求命令上,右边会显示两个按钮。第一个三角形是运行按钮。第二个是设置按钮。


把设置点开,可以看到两个选项,Copy as cURL(复制成curl命令)这个对我们很有用,Auto indent(自动缩进)相当于把你输入的内容重新排版,变得更容易观看。


点击运行后,就可以在右边看到运行的结果了。

在上面的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”副本数,等一系列的索引重要信息。


3.3 删除一个索引

通过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


索引的增删查演示完毕,但实际上,这并没有实际意义,因为这就相当于我们新建了一个“数据库”(index),里面并没有“表”(type)、“数据”(document)。


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


4.3 添加文档

现在表添加后并没有数据,我们还要为里面插入数据。

现在我们插入两条数据

我们既可以利用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发现 中查看数据。具体步骤如下。



RESTful 接口的一般用法总结如下:

[GET/POST/PUT/DELETE]  <index>/<type>/[<id>]

ElasticSearch的语句包括可能的如下几个部分:

相应的HTTP请求方法或者变量,如GET、POST、PUT、DELETE。
集群中任意一个节点的访问协议、主机名以及端口、请求的路径。
查询后再加上“?pretty”,可增强可读性
一个JSON编码的请求主体(如果需要的话)

上面演示的过程,如遇到什么困难,都请大家提出,我会尽快进行解答。


展开阅读全文

没有更多推荐了,返回首页