1. ES与Solr对比
Solr在海量历史数据的检索上比较有优势,而ES在实时检索上更加强大。
(1)Solr支持更多的数据格式:JSON、XML、CSV
ES仅支持JSON
(2)Solr需要Zookeeper来进行分布式管理,而ES自身带有分布式协调管理功能
(3)Solr官方提供的功能更多,而ES更注重核心功能,高级功能多交给第三方插件
2. ES与关系型数据库对比
关系型数据库:Database(数据库) Table(表) Row(行) Column(列)
ES: Index(索引库) Type(类型) Document(文档) Field(字段)
3. ES应用场景
站内搜索、NoSQL JSON文档数据库(读写性能上优于MongoDB,同时支持地理位置查询)、监控(统计、日志类时间序的数据的存储和分析)
4. ES head插件
(1)显示集群的拓扑,并且能够执行索引和节点级别操作
(2)搜索接口能够查询集群中原始JSON或表格格式的检索数据
(3)能够快速访问并显示集群的状态
@在ES5版本以后采用独立服务的形式进行安装,安装方法如下:
(1)首先需要安装nodejs、npm(root用户下)
yum -y install nodejs npm
如果提示"No package npm available"问题,先输入:rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
(2)安装git
yum -y install git
(3)下载head
切换成普通用户
git clone https://github.com/mobz/elasticsearch-head.git
(4)安装head
cd elasticsearch-head/
npm install
注意:如果报错显示 npm ERR! Error: CERT_UNTRUSTED,这是ssl验证问题,可使用下面命令解决: npm config set strict-ssl false
@head插件的配置:
在elasticsearch-head目录下:
(1)修改Gruntfile.js配置,添加hostname:'*'
(2)修改head/_site/app.js文件
修改head连接es的地址
(3)对ES配置
修改elasticsearch.yml文件,增加跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
@启动head插件
配置完成后,进入elasticsearch-head/node_modules/grunt/bin,然后执行脚本
./grunt server,成功后通过浏览器访问URL:IP:9100
5. ES REST操作
(1)REST(REpresentation State Transfer)
描述了一个架构样式的网络系统,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计我们称之为RESTful。
(2)ES内置的REST接口
(3)ES的REST操作
#1. 创建索引库
curl -XPUT 'http://192.168.10.129:9200/test/'
注意:
索引库名称必须全部小写
#2. 添加一个字段PUT/POST
curl -H "Content-Type: application/json" -XPOST http://192.168.10.129:9200/test/user/1 -d '{"name" : "jack", "age" : 28}'
## 综合用例:
curl -H "Content-Type: application/json" -X(POST/PUT) http://localhost:9200//索引库/类型名/id/_create -d 字段数据(JSON格式)
注意:
##
PUT操作适用于更新(幂等方法),多次操作后结果没有不同
POST操作适用于新增操作(非幂等)会有重复加载问题,当多次执行POST操作后,会创建出若干个资源。
##
如果没有明确指定索引数据ID那么ES会随机生成ID,需要使用POST操作
#3. 查询索引库GET
## 根据id查询
curl -XGET "http://192.168.10.129:9200/test/user/1"
## 显示指定字段(添加pretty字段,可以返回JSON形式的结果)
curl -XGET 'http://192.168.10.129:9200/test/user/1?_source=age&pretty'
## 根据条件查询
curl -XGET 'http://192.168.10.129:9200/test/user/_search?q=name:jack&pretty=true'
## 综合得出:查询范例
curl -XGET "http://localhost:9200/索引库/类型名/id?(_source=?)&(_search=?)&(pretty=?)
#4. 更新
## 局部更新
可以添加新字段或者更新已有字段(必须使用POST)
curl -H "Content-Type: application/json" -XPOST http://localhost:9200/索引库/类型名/id/_update -d 字段数据(JSON格式)
#5. 删除
curl -XDELETE url
#6. 批量操作 -bulk
bulk API可以帮助我们同时执行多个请求
执行方式:
##1. 首先先创建一个文件,内部填写以下用例:
用例:
{"index":{"_index":"test","_type":"user","_id":"1"}}
{"name":"jack","age":23}
##2. 执行批量操作
curl -H "Content-Type: application/json" -XPOST http://localhost:9200/_bulk --data-binary @文件名