elasticsearch概括
什么是ES?
Elasticsearch是分布式搜索和分析引擎,可以实现快速的搜索大量的数据的功能,并且实现搜索过程中的计算分析。
分析计算,伴随着搜索过程实现的,他可以实现的功能:
- 搜索100个数据中任务,统计多少人是35以下,多少人是35以上。
- 在搜索时,做聚合分析,最大值,最小值,平均值等等。
天生分布式,数据本身就在ES中以多个分片的结构存在
安装启动配置ES的环境
先克隆3个虚拟机
- 选择克隆
- - 选择当前状态
- 链接克隆
ES01,ES02,ES03
启动虚拟机,调整网络
vim /etc/sysconfig/netwok-scripts/ifcfg-ens33
目录结构
bin:启动命令
config:
- elasticsearch.yml:es节点核心属性配置文件
- jvm.options:es启动的jvm配置,占用内存
logs:日志文件
data:一个es节点保存的所有索引,集群状态数据(存在的话会影响集群搭建)
rm -rf data# 强制删除
plugins:IK分词器插件
ES启动
不允许root用户启动软件,当前虚拟机中准备了一个tedu的用户,可以实现启动es的命令
切换用户tedu
# su tedu
启动目录
es根目录bin文件夹下
注:如果不能用tab键直接提示,需要加./
$elasticsearch在控制台输出日志
$elasticsearch -d 在后台运行(不介意,不方便观察日志信息,错误信息)
##验证访问
通过一个请求,访问es(当前状态无法通过外界请求)。从本地发送一个http请求,可以使用curl命令
curl “localhost:9200” ,看到的信息如下,说明当前es启动环境证明没有问题。
内存占用分配问题
虚拟机内存上限2g,es默认要求启动环境内存上限时2g,当前虚拟机config文件夹下jvm.options中,可以调整运行内存分配,修改成1g。
打开es家目录中config下jvm.options修改23行。
体验操作es实现数据读写功能
- 创建索引
使用curl命令,发起一个http的put请求,在es中新增了一个就做index01的索引(看成是database)
- 观察索引文件
当前在es新增的索引文件是数据的一部分,存在与es家目录中data文件。
es的head插件
通过es的文件夹查看数据时非常复杂麻烦,所以可以使用这样一个html5插件来展示视图的页面
- 启动一个head的插件
3个虚拟机,任意一个虚拟机都存在这个head插件,后续使用过程中,只需选择开启其中一个就行。
head插件文件夹目录
/home/presoft/elasticsearch-head
进入到文件夹,直接运行启动命令
grunt server
由于head提前配置安装好的,ip地址一定和当前虚拟机不同,所以需要修改ip地址配置
head插件家目录中,有一个gruntfile.js文件
重新启动后
- 插件的使用
使用windows的浏览器访问当前head插件启动时提示的地址
head插件的作用,仅仅是向es发送一些查看状态和数据的请求(根据es的接口地址,可以通过F12查看到所有head插件发送的请求)。将es的返回响应做数据解析,放到视图中展示
可以在head插件中地址栏输入当前你想让head插件连接的es节点ip:9200
es配置文件
如果我们想要控制一个es运行进程(es节点)的运行特性。可以通过修改核心配置文件elasticsearch.yml。位置在config文件夹中,es提供了模板和解释。
Rest风格
启动es,es集群都是支持http协议的访问的,将每一个http协议的访问,看成是协调es功能的一次命令,遵循Rest风格的接口命令设计。
Rest风格是?
背景
蒂姆.博纳斯.李(http协议创始人)2001年提出论文,讨论Rest风格
住址:http协议,大量人员卵用,遵循Rest风格
http协议基于语法的使用,
- Rest定义
- uri:url地址,只要请求地址不变,永远应该指向唯一的一个网络资源(一个请求地址,对应一个网络资源)
- http方法方式:请求方式不同,操作功能不同
- get
- post
- delete
- patch
- header
Rest风格怎么用
按照Rest风格,我们教务系统为例,应该设计成http://www.aise.com/major/manage/{majorId}
如果想要新增一个专业,put请求【请求体数据】,如果想要查询一个专业get请求{查询条件}
Rest风格有什么好处
对于程序接口设计,有规范化,方便对程序更新维护
老代码1.0
服务端
/product/manage/save
/product/manage/update
/product/manage/delete
客户端遵循服务端接口
新版本2.0
/product/manage/insert
/product/manage/edit
/product/manage/remove
CURL命令
curl命令脚本,支持http协议,发送http协议请求,可以利用这个命令,发送向es的所有操作请求。
语法
curl -X<method> <protocal><url>?<query> -d <request-body> -H<header-content>
- method :请求方式,例如GET,PUT,POST
- protocal:协议,例如http,https
- url:请求地址
- query:查询参数
- request-body:请求体参数{es中,请求体基本都是json字符串}
- header-content:头信息,例如:HOST:www.baidu.com Content-type:text\html;charset=utf-8 Content-type:application/json
操作使用curl访问es节点
- 新增一个索引
curl -XPUT http://192.168.137.162:9200/index01?pretty
- 查询一个索引
curl -XGET http://192.168.137.162:9200/index01?pretty
- 删除一个索引
curl -XDELETE http://192.168.137.162:9200/index01?pretty
- 新增一个数据
curl -XPUT http://192.168.137.162:9200/index001/_doc/1?pretty -d '{"name":"王翠花","age":"18"}' -H 'Content-Type:application/json'
准备好一个可以被外界访问的节点
- 将原有的模板elasticsearch.yml备份一下
cp elasticsearch.yml elasticsearch.yml.bak
vim elasticsearch.yml