Windows下ElasticSearch的Head安装及基本使用


前段时间,有一朋友咨询我,说es的head插件一直安装失败,为了给朋友解惑,自己百度博文并实践了一番,也的确踩了些坑,但我给爬了起来。今天就来分享下实践心得并跳过的坑。

ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎,它能很方便的使大量数据具有搜索、分析和探索的能力,简称es。本文分五部分描述,es的安装,head插件安装,es的基本概念,es的基本使用,问题总结。

目录

es安装

head插件安装

es基本概念

es基本使用

问题总结

https://www.elastic.co/cn/downloads/elasticsearch,最新版本已是7.2.0。下载后,解压到任意目录,我的路径是:D:\elasticsearch-7.2.0

③启动elasticsearch

es的配置文件在config目录下,常用配置在elasticsearch.yml文件。我这里只是做学习目的,所以不修改此文件而直接启动es。在windows环境下启动es方法为命令行进入到bin\目录下,执行elasticsearch.bat,或者双击此文件以启动es。 启动日志如下:

es的默认端口是9200,在浏览器打开网址:localhost:9200,出现如下截图,则说明es已经安装成功了

es的安装是不是很简单?接下来来安装head插件

https://nodejs.org/en/download/,下载对应环境的node版本安装即可,安装步骤略过了。

安装过程结束后,在dos窗口查看是否安装成功,使用命令:node -v,出现如下截图,则说明安装成功。

2.安装grunt

在node安装路径下,使用命令安装:npm install -g grunt-cli 安装grunt。

安装结束后,使用命令grunt -version查看是否安装成功,出现如下截图,说明安装成功。

3.安装head插件

①下载head插件

下载地址:https://github.com/mobz/elasticsearch-head,下载zip包

②解压zip包

我的解压路径:D:\elasticsearch-7.2.0\elasticsearch-head-master

③安装pathomjs

在dos窗口进入到head路径下,使用命令npm install安装pathomjs

④启用服务

使用命令npm start启用服务,出现如下截图,则说明服务启动成功

4.浏览器中访问

使用地址:localhost:9100访问,出现如下截图,则说明head安装成功,默认端口是9100

es和head插件都已安装成功,接下来介绍下es的基本概念及基本使用。

三、es的基本概念

①集群和节点

一个es集群是由一个或多和es节点组成的集合,每一个集群都有一个名字,每个节点都有自己的名字,节点是可以存储数据, 参与索引数据的独立服务。

②索引(类似于数据库里面的database)

索引是含有相同属性的文档集合,索引在es中是通过一个名字来识别的,必须是英文字母小写,且不含中划线。

③类型(相当于sql中的table)

一个索引可以定义一个或多个类型,文档必须属于一个类型

④文档(相当于sql中的一行记录)

文档是可以被索引的基本数据单位

⑤分片

每个索引都有多个分片,每个分片都是一个luncene索引,分片的好处:分摊索引的搜索压力,分片还支持水平的拓展和拆分以及分布式的操作,可以提高搜索和其他处理的效率。

⑥备份

拷贝一个分片就完成了分片的备份,备份的好处:当主分片失败或者挂掉,备份就可以代替分片进行操作,进而提高了es的可用性,备份的分片还可以进行搜索操作,以分摊搜索的压力。es在创建索引时,默认创建5个分片,一份备份,可以修改,分片的数量只能在创建索引的时候指定,索引创建后就不能修改分片的数量了,而备份是可以动态修改的。

⑦数据类型

核心类型 字符串类型 string,text,keyword  整数类型 integer,long,short,byte  浮点类型 double,float,half_float,scaled_float  逻辑类型 boolean  日期类型 date  范围类型 range  二进制类型 binary  复合类型 数组类型 array  对象类型 object  嵌套类型 nested  地理类型 地理坐标类型 geo_point  地理地图 geo_shape  特殊类型 IP类型 ip  范围类型 completion  令牌计数类型 token_count  附件类型 attachment  抽取类型 percolator 

四、es基本使用

1.es基本格式

es是以RESTFul风格来命名API的,其API的基本格式如下: http://:/<索引>/<类型>/<文档id> 这里需要注意的是,该格式从es7.0.0开始,移除Type(类型)这个概念,新的基本格式如下: http://:/<索引>/_doc/<文档id> Type(类型)字段那里变为固定值 _doc es的动作是以http方法来决定的: 常用的http方法: GET/PUT/POST/DELETE

2.创建索引

在head插件中创建,操作如下:

点击索引>新建索引

弹出该提示,则说明创建成功

3.查看索引信息

点击概览查看创建情况

创建索引分为: 结构化创建与非结构化创建

查看索引是否是结构化的方法:点击刚创建的索引信息,可查看到如下所示信息:

Mappings是结构化的一个关键词,其后内容是空的,说明这个索引是一个非结构化的索引。

4.创建结构化索引

点击head插件的“复合查询”,输入内容如下:

勾选易读,点击验证json,可以检测json格式是否正确

请求方式选择post,点击提交请求,返回如下截图数据,则表示创建成功

创建成功后,可以返回到概览中查看索引信息,如下:

也可以直接在复合查询中,改成get请求方式,提交请求,查看数据:

5.数据插入

文档id, 唯一索引值, 指向文档数据

①指定文档id插入

 使用http中的put方法,插入时输入的ip地址,http://localhost:9200/test/_doc/1

请求参数依次为:索引名称/类型名称/文档id

请求参数

{
"duty": "技术",
"age": 22,
"name": "一壶清酒",
"date": "2019-07-21 11:00:00"
}

如下图所示:

在数据浏览中可查看到该条数据,如下所示:

②自动产生文档id插入

使用http中的post方法,插入时输入的ip地址:http://localhost:9200/test/_doc

请求参数

{
"duty": "测试",
"age": 25,
"name": "温一壶清酒",
"date": "2019-07-21 11:05:00"
}

依然到数据浏览中查看数据,如下所示,id为自动生成:

③postman插入数据

操作方式一样,只是改成了postman而已,入参如下所示:

到数据浏览处查看数据,如下:

 postman的操作,就只引用了这一个例子,其他操作都一样,所以就不再赘述。

6.修改文档数据

①直接修改文档

http方法: post方法

请求地址:  

http://localhost:9200/test/_doc/1/_update

请求参数

{
"doc": {
"duty": "技术",
"age": 22,
"name": "我是一壶清酒",
"date": "2019-07-21 11:06:00"
}
}

关键词: _update,doc

“doc”为关键字,要修改的文档放在doc中, 实例修改了type为test索引下_doc中id为1 的name和date属性

到数据浏览处查看修改后的数据,如下:

②脚本修改文档

通过脚本修改的api格式与直接修改的是一致的

http方法: post方法

请求地址:

http://localhost:9200/test/_doc/1/_update

请求参数

  "script": {

    "lang": "painless",

    "inline": "ctx._source.age += 30"

  }

关键字”script”: 标志以脚本的方式修改文档

“lang”:表示以何种脚本语言进行修改,“painless”表示以es内置的脚本语言进行修改。此外es还支持多种脚本语言,如Python,js等等

“inline”:指定脚本内容 “ctx”代表es上下文,_source 代表文档

查看数据,age增加了5,如下所示:

7.删除文档

http方法: delete

请求地址:

http://localhost:9200/test/_doc/1

操作如下:

到数据浏览处查看数据,已没有id为1的文档了,如下所示:

8.删除索引

①索引概览中删除

点击已有索引的动作,会有个删除操作,如下:

输入删除,点击确定,该索引就被删除了,会返回一个true的提示框

再次查看,就只有一个索引了

②通过api删除

http方法: delete

请求地址:

http://localhost:9200/demo

五、问题总结

1.grunt不是内部或外部命令

使用命令npm start启用服务时,报grunt不是内部或外部命令,如下所示:

解决办法:

将node安装路径,加到环境变量path路径下,重启dos窗口即可。

2.head服务启用失败

使用npm start命令启用服务,报错如下:

解决办法:

在es路径下执行命令 npm install,因为没有安装pathomjs,所以导致报错

3.提示未连接

head服务启用成功,通过localhost:9100访问,提示集群健康值:未连接

解决办法:

需要在elasticsearch.yml文件中增加以下配置:

http.cors.enabled: true

http.cors.allow-origin: "*"

说明:

http.cors.enabled:true 如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。

http.cors.allowed.origin:"*" 如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处。

重启服务,再次访问,则恢复正常

小结

全文通读到此,发现ElasticSearch的安装、head插件的安装其实很简单,并不是那么难。es的使用,就需要学习些基本的概念,知识的海洋是渊博的,此次介绍的es的使用,也只是简单的增删改查,属于很浅薄的知识。自己在摸索的时候,也是一点一点学习,百度以前前辈们的博文学习、摸索。只要努力,遇到问题,积极去解决,我相信一定会成功。文中观点,有误之处,欢迎批评指正