Windows下ElasticSearch的Head安装及基本使⽤
前段时间,有⼀朋友咨询我,说es的head插件⼀直安装失败,为了给朋友解惑,⾃⼰百度博⽂并实践了⼀番,也的确踩了些坑,但我给爬了起来。今天就来分享下实践⼼得并跳过的坑。
ElasticSearch 是⼀个分布式、⾼扩展、⾼实时的搜索与数据分析引擎,它能很⽅便的使⼤量数据具有搜索、分析和探索的能⼒,简称es。本⽂分五部分描述,es的安装,head插件安装,es的基本概念,es的基本使⽤,问题总结。
⽬录
⼀、es安装
安装⽅式⽹络上有很多,这⾥简单说下步骤,具体实践是很简单的
①配置java环境
需要java环境,最好是较新的java环境,java环境的配置就略过了
②安装elasticsearch
③启动elasticsearch
es的配置⽂件在config⽬录下,常⽤配置在l⽂件。我这⾥只是做学习⽬的,所以不修改此⽂件⽽直接启动es。在windows环境下启动es⽅法为命令⾏进⼊到bin\⽬录下,执⾏elasticsearch.bat,或者双击此⽂件以启动es。
启动⽇志如下:
es的默认端⼝是9200,在浏览器打开⽹址:localhost:9200,出现如下截图,则说明es已经安装成功了
es的安装是不是很简单?接下来来安装head插件
⼆、head插件安装
1.安装node
es5以上就需要安装node和grunt,所以安装head插件的前提,是需要把该两项配置好。
安装过程结束后,在dos窗⼝查看是否安装成功,使⽤命令:node -v,出现如下截图,则说明安装成功。
2.安装grunt
在node安装路径下,使⽤命令安装:npm install -g grunt-cli 安装grunt。
安装结束后,使⽤命令grunt -version查看是否安装成功,出现如下截图,说明安装成功。
3.安装head插件
①下载head插件
②解压zip包
我的解压路径:D:\elasticsearch-7.2.0\elasticsearch-head-master配置windows update失败
③安装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的基本格式如下:
<ip>:<port>/<;索引>/<;类型>/<⽂档id>
这⾥需要注意的是,该格式从es7.0.0开始,移除Type(类型)这个概念,新的基本格式如下:陈思建
<ip>:<port>/<;索引>/_doc/<⽂档id>
Type(类型)字段那⾥变为固定值 _doc
es的动作是以http⽅法来决定的: 常⽤的http⽅法: GET/PUT/POST/DELETE
2.创建索引
在head插件中创建,操作如下:
点击索引>新建索引
弹出该提⽰,则说明创建成功
3.查看索引信息
点击概览查看创建情况
创建索引分为: 结构化创建与⾮结构化创建
查看索引是否是结构化的⽅法:点击刚创建的索引信息,可查看到如下所⽰信息:
Mappings是结构化的⼀个关键词,其后内容是空的,说明这个索引是⼀个⾮结构化的索引。
4.创建结构化索引
点击head插件的“复合查询”,输⼊内容如下:
勾选易读,点击验证json,可以检测json格式是否正确
请求⽅式选择post,点击提交请求,返回如下截图数据,则表⽰创建成功
创建成功后,可以返回到概览中查看索引信息,如下:
也可以直接在复合查询中,改成get请求⽅式,提交请求,查看数据:
5.数据插⼊
⽂档id, 唯⼀索引值, 指向⽂档数据
①指定⽂档id插⼊
请求参数依次为:索引名称/类型名称/⽂档id
请求参数
{
"duty": "技术",
"age": 22,
"name": "⼀壶清酒",
"date": "2019-07-21 11:00:00"
}
如下图所⽰:
在数据浏览中可查看到该条数据,如下所⽰:
②⾃动产⽣⽂档id插⼊
请求参数
{
"duty": "测试",
"age": 25,
"name": "温⼀壶清酒",
"date": "2019-07-21 11:05:00"
}
依然到数据浏览中查看数据,如下所⽰,id为⾃动⽣成:
③postman插⼊数据
操作⽅式⼀样,只是改成了postman⽽已,⼊参如下所⽰:
到数据浏览处查看数据,如下:
postman的操作,就只引⽤了这⼀个例⼦,其他操作都⼀样,所以就不再赘述。
6.修改⽂档数据
①直接修改⽂档
http⽅法: post⽅法
请求地址:
请求参数
{
"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⽅法
请求地址:
请求参数
{
"script": {
"lang": "painless",
"inline": "ctx._source.age += 30"
}
}
关键字”script”: 标志以脚本的⽅式修改⽂档
“lang”:表⽰以何种脚本语⾔进⾏修改,“painless”表⽰以es内置的脚本语⾔进⾏修改。此外es还⽀持多种脚本语⾔,如Python,js等等
“inline”:指定脚本内容 “ctx”代表es上下⽂,_source 代表⽂档
查看数据,age增加了5,如下所⽰:
7.删除⽂档
http⽅法: delete
请求地址:插上科学的翅膀飞作文
操作如下:
到数据浏览处查看数据,已没有id为1的⽂档了,如下所⽰:
8.删除索引
①索引概览中删除
点击已有索引的动作,会有个删除操作,如下:
输⼊删除,点击确定,该索引就被删除了,会返回⼀个true的提⽰框
再次查看,就只有⼀个索引了
②通过api删除
http⽅法: delete
请求地址:
五、问题总结
使⽤命令npm start启⽤服务时,报grunt不是内部或外部命令,如下所⽰:
解决办法:
将node安装路径,加到环境变量path路径下,重启dos窗⼝即可。
2.head服务启⽤失败
使⽤npm start命令启⽤服务,报错如下:
解决办法:
在es路径下执⾏命令 npm install,因为没有安装pathomjs,所以导致报错
3.提⽰未连接
head服务启⽤成功,通过localhost:9100访问,提⽰集健康值:未连接
解决办法:
需要在l⽂件中增加以下配置:
说明:
重启服务,再次访问,则恢复正常
⼩结
全⽂通读到此,发现ElasticSearch的安装、head插件的安装其实很简单,并不是那么难。es的使⽤,就需要学习些基本的概念,知识的海洋是渊博的,此次介绍的es的使⽤,也只是简单的增删改查,属于很浅薄的知识。⾃⼰在摸索的时候,也是⼀点⼀点学习,百度以前前辈们的博⽂学习、摸索。只要努⼒,遇到问题,积极去解决,我相信⼀定会成功。⽂中观点,有误之处,欢迎批评指正