1.搜索引擎知识和相关框架
搜索目的:从海量数据中获取想要的信息
传统做法:
1.文档中使用find功能
2.mysql中使用like模糊查询
问题:
1.海量数据不能及时响应。少量数据可以mysql建立索引解决
2.一些无用测词不能进行过滤,没法进行分词
3.数据量大的话难以拓展
4.相同的数据难以进行相似度最高的进行排序
搜索引擎:
1。存储非结构化数据
2.快速检索和响应
3.进行相关性排序,过滤
4.可以去掉停用词(没有特殊含义的词,比如英文啊,is等,中文:这,的,是等)
框架一般支持可以自定义的停用词
常用框架:
1.Lucene
Apiche的开源项目,高性能,可拓展的工具库,提供搜索的基本框架;
如果开发人员需要使用,需自己开发,成本大,但是性能高
2.solr
solr是基于lucene的全文搜索框架,提供了比lucene更为丰富的功能,
同时实现了可配置,可拓展且对查询性能进行了优化
建立索引时,搜索效率下降,实时索引搜索效率不高
数据量的增加,solr的搜索效率会变得更低,适合小数据量的搜索
3.elasticsearch
基于lucene的搜索框架,它提供了一个分布式的多用户能力的全文搜索引擎,
基于RESTful web接口,上手容易,拓展节点方便,可用于存储和检索海量的数据,接近实时搜索,海量数据增加,搜索响应的性能几乎不受影响;
分布式搜索矿建,自动发现节点,副本机制,保障高可用性
#########################ES特性
ElasticSearch是一个基于Lucene的搜索服务器,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
作用: 存储数据时有序存储
数据和索引分类
压缩数据
1.特点:全文检索,结构化检索,数据统计,分析,接近实时检索,分布式搜索(可部署数百甚至更多的服务器)
处理PB级别数据,搜索纠错,自动完成(提示)
2.使用场景:日志搜索,数据聚合,数据监控,报表统计分析
#####################ES目录和配置文件
bin:启动文件
log:日志文件,=>运行日志,慢查询日志
config:核心配置文件
lib:依赖包
plugins:插件
#################字段属性
字符串:字符串有keyword 和 text两种类型,keyword是建立精确索引的字符串,text是建立分词索引的字符串。
ip类型:ip
数字类型:short,integer,long
###############单点安装ES
下载安装包,解压,执行./bin/elasticsearch运行
访问9200端口验证安装
#####################head插件安装
进入github.com网站搜索elasticsearch-head复制下载链接
wget link下载
解压
安装node.js=>下载安装,见https://www.cnblogs.com/liuqi/p/6483317.html
更改elasticsearch配置文件vim ./config/elasticsearch.yml,添加http.cors.enabled: true 和http.cors.allow-origin: "*"
后天启动elasticsearch,./bin/elasticsearch -d,启动head插件npm run start,访问9100端口
#########################elasticsearch 集群安装
更改master 节点elasticsearch配置文件vim ./config/elasticsearch.yml,添加http.cors.enabled: true 和http.cors.allow-origin: "*"
cluster.name: ZW
node.name: master
node.master: true
network.host: 127.0.0.1
##############################
更改ES slaver2节点elasticsearch.yml的配置
cluster.name: ZW
node.name: slave1
network.host: 127.0.0.1
http.port: 8200
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
#######################
更改ES slaver2节点elasticsearch.yml的配置
cluster.name: ZW
node.name: slave2
network.host: 127.0.0.1
http.port: 7200
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
######################logstash
Logstash是一个接收,处理,转发日志的工具.Logstash在ELK日志系统中担任搬运工的角色,它为数据存储,报表查询和日志解析创建了一个功能强大的管道链。
Logstash提供了多种多样的 input,filters,codecs和output组件
###########ES概念
索引:含有相同属性的文档集合(database)必须是英文字母小写且不含下划线
类型:索引可以定义一个和多个类型,文档必须属于一个类型(table)
文档:是可以被索引的基本数据单位(row)
分片:每个索引都有多个分片,每个分片都是一个lucene索引,分片只能在创建索引的时候指定,不可以动态修改
数据量大,没有足够的硬盘空间,且一次搜索这么大的数据,响应速度更不上es,可以提高吞吐方便拓展
备份ÿ