文章目录
-
Elasticsearch 概述
- Elasticsearch入门
一、Elasticsearch概述
1.1 搜索是什么
概念:用户输入想要的关键词,返回含有该关键词的所有信息。
场景:1互联网搜索:谷歌、百度、各种新闻首页2 站内搜索(垂直搜索):企业 OA 查询订单、人员、部门,电商网站内部搜索商品(淘宝、京东)场景。
1.2 数据库做搜索弊端
1.2.1站内搜索(垂直搜索):数据量小,简单搜索,可以使用数据库。
l 存储问题。电商网站商品上亿条时,涉及到单表数据过大必须拆分表,数据库磁盘占用过大必须分库( mycat )。l 性能问题:解决上面问题后,查询 “ 笔记本电脑 ” 等关键词时,上亿条数据的商品名字段逐行扫描,性能跟不上。l 不能分词。如搜索 “ 笔记本电脑 ” ,只能搜索完全和关键词一样的数据,那么数据量小时,搜索 “ 笔记电脑 ” , “ 电脑 ” 数据要不要给用户。
1.2.2互联网搜索,肯定不会使用数据库搜索。数据量太大。PB级。
我们可以使用搜索引擎来解决数据库搜索的问题
:
搜索也是一款数据库,搜索可以进行分词搜索 --- 搜索速度非常快
1.3常见的搜索引擎
ElasticSearch与Solr比较
1.当单纯的对已有数据进行搜索时,Solr更快
2. 当实时建立索引时,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显的优势
3. 随着数据量的增加, Solr 的搜索效率会变得更低,而 ElasticSearch却没有明显的变化
总结
1 、 es 基本是开箱即用 ( 解压就可以用 !) 【南京】 , 非常简单。 Solr安装略微复杂一丢丢 !2 、 Solr 利用 Zookeeper 进行分布式管理 , 而Elasticsearch<mark> 自身带有分布式协调管理功能 </mark> 。3 、 Solr 支持更多格式的数据 , 比如 JSON 、 XML 、 CSV , 而Elasticsearch 仅支持 json 文件格式。4 、 Solr 官方提供的功能更多 , 而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要 kibana 友好支撑5.Solr 查询快 , 但更新索引时慢 ( 即插入删除慢 ) ,用于电商等查询多的应用 ;ES建立索引快 ( 即查询慢 ) ,即实时性查询快,用于 facebook 新浪等搜索。Solr是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。6 、 Solr 比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而 Elasticsearch 相对开发维护者较少 , 更新太快 , 学习使用成本较高
1.4Elasticsearch 是什么
The Elastic Stack, 包括 Elasticsearch 【搜索,分析】、 Kibana 【可视化】、 Beats 和 Logstash 【数据的搜集】(也称为 ELK Stack )。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。Elaticsearch ,简称为 ES , ES 是一个 开源的高扩展的分布式全文搜索引擎 , 是整个 ElasticStack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。
1.5Elasticsearch的使用场景
国外:
维基百科,类似百度百科, “ 网络七层协议 ” 的维基百科,全文检索,高亮,搜索推荐Stack Overflflow (国外的程序讨论论坛),相当于程序员的贴吧。遇到it 问题去上面发帖,热心网友下面回帖解答。GitHub (开源代码管理),搜索上千亿行代码。电商网站,检索商品日志数据分析, logstash 采集日志, ES 进行复杂的数据分析( ELK 技术, elasticsearch+logstash+kibana )商品价格监控网站,用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户,比如说订阅《 java 编程思想》的监控,如果价格低于 27 块钱,就通知我,我就去买。BI 系统,商业智能( Business Intelligence )。大型连锁超市,分析全国网点传回的数据,分析各个商品在什么季节的销售量最好、利润最高。成本管理,店面租金、员工工资、负债等信息进行分析。从而部署下一个阶段的战略目标。
国内:
百度搜索,第一次查询,使用 es 。OA 、 ERP 系统站内搜索。
es:搜索的一款数据库,支持的数据格式json.
二、 ES的安装
1
、安装
JDK
,至少
1.8.0_73
以上版本,验证:
java -version
。
2
、下载和解压缩
Elasticsearch
安装包,查看目
录结构。
https://www.elastic.co/cn/downloads/elasticsearch
下载地址:
https://www.elastic.co/cn/downloads/
历史版本下载:
https://www.elastic.co/cn/downloads/past-releases/
解压后,进入
bin
文件目录,点击
elasticsearch.bat
文件启动
ES
服务 。
注意:
9300
端口为
Elasticsearch
集群间组件的通信端口,
9200
端口为
浏览器访问的
http
协议
RESTful
端口
打开浏览器,输入地址:
http://localhost:9200
,测试返回结果,返回结
果如下:
三、 Windows安装Kibana
1
、
kibana
是
es
数据的前端展现,数据分析时,可以方便地看到数据。作
为开发人员,可以方便访问
es
。
https://www.elastic.co/cn/downloads/
历史版本下载:
https://www.elastic.co/cn/downloads/past-releases/
2
、下载,解压
kibana
。
3
、启动
Kibana
:
bin\kibana.bat
4
、浏览器访问
http://localhost:5601
进入
Dev Tools
界面。像
plsql
一样支
持代码提示。
5
、发送
get
请求,查看集群状态
GET _cluster/health
。相当于浏览器访
问。
四、 ES中常见的概念
Elasticsearch
是
面向文档型数据库
,一条数据在这里就是一个文档。 为
了方便大家理解,我们将
Elasticsearch
里存储文档数据和关系型数据库
MySQL
存储数据的概念进行一个类比
ES
里的
Index
可以看做一个库,而
Types
相当于表,
Documents
则相当
于表的行。这里
Types
的概念已经被逐渐弱化,
Elasticsearch 6.X
中,一
个
index
下已经只能包含一个
type
,
Elasticsearch 7.X
中
, Type
的概念已
经被删除了。
五、 ES常用API接口
六、基本操作
创建一个索引,添加
PUT / test01 / type1 / 1{"name" : " 张三 " ,"age" : 15}
字段数据类型
字符串类型
text、
keyword
- text :支持分词,全文检索 , 支持模糊、精确查询 , 不支持聚合 , 排序操作 ;text 类型的最大支持的字符长度无限制 , 适合大字段存储;- keyword :不进行分词,直接索引、支持模糊、支持精确匹配,支持聚合、排序操作。 keyword 类型的最大支持的长度为 ——32766 个 UTF-8类型的字符 , 可以通过设置 ignore_above 指定自持字符长度,超过给定长度后的数据将不被索引,无法通过 term 精确匹配检索返回结果。
数值型
long、 Integer、 short、 byte、 double、 flfloat、 half flfloat 、 scaled flfloat
日期类型
date
te
布尔类型
boolean
二进制类型
binary
等等
…