背景知识
- Lucene是一套数据检索工具包(jar包),不包含搜索引擎系统,主要包含:索引结构、读写索引的工具、排序、搜索顾泽…工具类
- Lucene和ElasticSearch关系:Elasticsearch是基于Lucene做了一些封装和增强
概述
- Elasticsearch简称为es,es是一个开源的
高扩展
的分布式全文检索引擎
,它可以近乎实时的存储,检索数据
- 本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
- 使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,它的目的是通过简单的
RESTful API
来隐藏Lucene的复杂性,从而让全文搜索变得简单。 - 用于
全文搜索、结构化搜索、分析
以及将这三者混合使用
ES和solr的差别
solr简介
- solr是Apache下的一个顶级开源项目,采用Java开发,基于Lucene的全文搜索服务器,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化
- 对外提供类似于web-service的API接口,用户可以通过http请求向搜索引擎服务提供一定格式的文件,生成索引,也可以通过提出查找请求并得到返回结果
比较
- 单纯的对已有数据进行搜索时,Solr更快
- 实时建立索引时,solr会产生io阻塞,查询性能较差,ES具有明显的优势
- 随着数据量的增加,solr的搜索效率会变的更低,而ES却没有明显的变化
- 一般传统的项目从solr转变为ES时,性能会提升0~50倍搜索性能
- es基本是开箱即用,solr的安装略微复杂一些
- solr利用Zookeeper进行分布式管理,而ES自带分布式协调管理功能
- solr支持更多数据格式,比如json、XML、CSV,而ES只支持json文件格式
- Solr官网提供的功能更多,而ES本身更注重核心功能,高级功能多有第三方插件提供
- solr查询快但是更新索引时慢,用于电商等查询多的应用,es建立索引快,实时性查询快,用于Facebook新浪等的搜索
- solr是传统搜索引擎应用的有力解决方案,但ES更适用于新兴的实时搜索应用
- solr比较成熟,有一个更大,更成熟的用户、开发和贡献社区,而ES相对开发维护者较少,更新太快,学习使用成本高
ES安装
- 安装完毕后访问9200端口
可视化界面安装
- 下载:
git clone git://github.com/mobz/elasticsearch-head.git
- 进入elasticsearch-head文件启动
npm install
npm run start
- 安装完后多了grunt文件,后台执行:
./node_modules/grunt/bin/grunt server &
- 连接测试发现存在跨域问题:配置es配置文件
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS,HEAD,GET,POST,PUT,DELETE
http.cors.allow-headers: "X-Requested-With,Content-Type,Content-Length,X-User"
- 重启es服务再次测试
- es相当于一个数据库,可以建立索引(库),文档(库中的数据),es-head相当于一个数据展示工具
了解ELK
- ELK是
Elasticsearch、Logstash、Kibana
三大开源矿建首字母的大写简称 - ES见上面介绍
- Logstash是ELK中央数据流引擎用于从不同目标(文件、数据存储、MQ)收集的不同规格数据,经过过滤后支持输出到不同目的地(文件、MQ、Redis、elasticssearch、kafka等)
- kibana可以将es的数据通过友好的页面展示出来提供实时分析的功能
ELK架构
- 收集清洗–>搜索,存储–>展示
- ELK是一个日志分析架构技术栈的总称,但实际上ELK不仅仅用于日志分析,它还支持其他任何数据分析和收集的场景,日志分析和收集只是更具代表性不具唯一性
安装kibana
- kibana是一个针对es的开源分析及可视化平台,用来搜索,查看交互存储在es索引中的数据,使用kibana可以通过各种图表进行高级数据分析及展示。kibana让海量数据变得更加容易理解,操作简单基于浏览器的用户界面可以快速创建仪表盘(dashboard)实时显示es查询动态
- 安装完成后测试
开发工具(postman、curl、浏览器插件、libana开发工具)
- kibana开发工具地址:
http://localhost:5601/app/kibana#/dev_tools/console
- kibana汉化修改
#i18n.locale: "en" 默认
i18n.locale: "zh-CN"