前段时间,有一朋友咨询我,说es的head插件一直安装失败,为了给朋友解惑,本身百度博文并实践了一番,也的确踩了些坑,但我给爬了起来。今天就来分享下实践心得并跳过的坑。java
ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎,它能很方便的使大量数据具备搜索、分析和探索的能力,简称es。本文分五部分描述,es的安装,head插件安装,es的基本概念,es的基本使用,问题总结。node
es安装git
head插件安装github
es基本概念sql
es基本使用数据库
问题总结npm
安装方式网络上有不少,这里简单说下步骤,具体实践是很简单的json
须要java环境,最好是较新的java环境,java环境的配置就略过了windows
下载地址:https://www.elastic.co/cn/downloads/elasticsearch,最新版本已经是7.2.0。下载后,解压到任意目录,个人路径是:D:\elasticsearch-7.2.0api
es的默认端口是9200,在浏览器打开网址:localhost:9200,出现以下截图,则说明es已经安装成功了
es的安装是否是很简单?接下来来安装head插件
es5以上就须要安装node和grunt,因此安装head插件的前提,是须要把该两项配置好。
node下载地址:https://nodejs.org/en/download/,下载对应环境的node版本安装便可,安装步骤略过了。
安装过程结束后,在dos窗口查看是否安装成功,使用命令:node -v,出现以下截图,则说明安装成功。
在node安装路径下,使用命令安装:npm install -g grunt-cli 安装grunt。
安装结束后,使用命令grunt -version查看是否安装成功,出现以下截图,说明安装成功。
下载地址:https://github.com/mobz/elasticsearch-head,下载zip包
个人解压路径:D:\elasticsearch-7.2.0\elasticsearch-head-master
在dos窗口进入到head路径下,使用命令npm install安装pathomjs
使用命令npm start启用服务,出现以下截图,则说明服务启动成功
使用地址:localhost:9100访问,出现以下截图,则说明head安装成功,默认端口是9100
es和head插件都已安装成功,接下来介绍下es的基本概念及基本使用。
一个es集群是由一个或多和es节点组成的集合,每个集群都有一个名字,每一个节点都有本身的名字,节点是能够存储数据, 参与索引数据的独立服务。
索引是含有相同属性的文档集合,索引在es中是经过一个名字来识别的,必须是英文字母小写,且不含中划线。
一个索引能够定义一个或多个类型,文档必须属于一个类型
文档是能够被索引的基本数据单位
每一个索引都有多个分片,每一个分片都是一个luncene索引,分片的好处:分摊索引的搜索压力,分片还支持水平的拓展和拆分以及分布式的操做,能够提升搜索和其余处理的效率。
拷贝一个分片就完成了分片的备份,备份的好处:当主分片失败或者挂掉,备份就能够代替分片进行操做,进而提升了es的可用性,备份的分片还能够进行搜索操做,以分摊搜索的压力。es在建立索引时,默认建立5个分片,一份备份,能够修改,分片的数量只能在建立索引的时候指定,索引建立后就不能修改分片的数量了,而备份是能够动态修改的。
在head插件中建立,操做以下:
点击索引>新建索引
弹出该提示,则说明建立成功
点击概览查看建立状况
建立索引分为: 结构化建立与非结构化建立
查看索引是不是结构化的方法:点击刚建立的索引信息,可查看到以下所示信息:
Mappings是结构化的一个关键词,其后内容是空的,说明这个索引是一个非结构化的索引。
点击head插件的“复合查询”,输入内容以下:
勾选易读,点击验证json,能够检测json格式是否正确
请求方式选择post,点击提交请求,返回以下截图数据,则表示建立成功
建立成功后,能够返回到概览中查看索引信息,以下:
也能够直接在复合查询中,改为get请求方式,提交请求,查看数据:
文档id, 惟一索引值, 指向文档数据
使用http中的put方法,插入时输入的ip地址,http://localhost:9200/test/_doc/1
请求参数依次为:索引名称/类型名称/文档id
请求参数
{
"duty": "技术",
"age": 22,
"name": "一壶清酒",
"date": "2019-07-21 11:00:00"
}
以下图所示:
在数据浏览中可查看到该条数据,以下所示:
使用http中的post方法,插入时输入的ip地址:http://localhost:9200/test/_doc
请求参数
{
"duty": "测试",
"age": 25,
"name": "温一壶清酒",
"date": "2019-07-21 11:05:00"
}
依然到数据浏览中查看数据,以下所示,id为自动生成:
操做方式同样,只是改为了postman而已,入参以下所示:
到数据浏览处查看数据,以下:
postman的操做,就只引用了这一个例子,其余操做都同样,因此就再也不赘述。
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,以下所示:
http方法: delete
请求地址:
http://localhost:9200/test/_doc/1
操做以下:
到数据浏览处查看数据,已没有id为1的文档了,以下所示:
点击已有索引的动做,会有个删除操做,以下:
输入删除,点击肯定,该索引就被删除了,会返回一个true的提示框
再次查看,就只有一个索引了
http方法: delete
请求地址:
http://localhost:9200/demo
使用命令npm start启用服务时,报grunt不是内部或外部命令,以下所示:
解决办法:
将node安装路径,加到环境变量path路径下,重启dos窗口便可。
使用npm start命令启用服务,报错以下:
解决办法:
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的使用,也只是简单的增删改查,属于很浅薄的知识。本身在摸索的时候,也是一点一点学习,百度之前前辈们的博文学习、摸索。只要努力,遇到问题,积极去解决,我相信必定会成功。文中观点,有误之处,欢迎批评指正
本文仅表明做者观点,系做者@温一壶清酒发表。
欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。
文章出处:http://www.cnblogs.com/hong-fithing/