关于docker安装使用的ES
安装
使用docker最好,简单方便,使用接口的方式使用。
1、分布式的实时文件存储,每个字段都被索引并可被搜索
2、分布式的实时分析搜索引擎
3、可以扩展到成百上千台服务器,处理PB级结构化或非结构化数据。
elasticsearch:全文检索工具,使用方式是在linux安装,需要java环境,中文分词需要ik分词器扩展插件,然后通过接口的方式,存入数据,读取数据,查询数据
注意数据库数据的同步更新,以及es防止挂掉的脚本定时任务,
安装PHP扩展,实例化es之后,将文档加入索引,在添加的时候就创建了索引,索引就是表,文档就是行记录,然后通过
$params = [ 'index' => 'articles_index', 'type' => 'articles_type', 'id' => 'articles_1'];
//index相当于数据库名字 type相当于表名 。。
$res = $client->get($params);
获取数据。 或者delete或者indices()-》delete()删除索引
网页案例
使用场景
企业里对数据的查询一般可以分为三种:列表查询、详情查询和统计查询。列表一般就是列表页对应的查询,详情查询一般就是具体id对应的详情查询,而统计查询一般都是在看一些数值之类的报表,也就是一堆count值
可以使用sql转换ES查询语句的方式,提供统一的查询api,例如,框架中ORM方式先得出sql语句,之后使用扩展工具类将sql转换为ES查询语句,再使用ESapi进行查询。
基本知识
查询方式可以使用composer的插件将sql语句转变为ES查询语句的json,比如query"{"match":"zhongguo"}"ES查询有各种样式的语句可以使用
eg:match系列
1、match:返回所有匹配的分词。
2、match_all:查询全部。
3、match_phrase:短语查询,在match的基础上进一步查询词组,可以指定slop分词间隔。
4、match_phrase_prefix:前缀查询,根据短语中最后一个词组做前缀匹配,可以应用于搜索提示,但注意和max_expanions搭配。其实默认是50.......
5、multi_match:多字段查询,使用相当的灵活,可以完成match_phrase和match_phrase_prefix的工作
还有排序查询(sort);分页(from,size);bool查询(must,should);查询结果过滤(_source);高亮显示(highlight);精确查询与模糊查询(terms);聚合查询(avg、max、min、sum);分组查询(aggs,range分组,field为字段,from,to范围);
ES基本语句使用
安装logstash
需要使用docker 安装Logstash,来收集文件/var/log/messages
pull与es对应版本的logstash, 然后 run 等待30秒 查看日志,docker logs -f logstash
将拷贝数据 授予权限
docker cp logstash:/usr/share/logstash /data/elk7/
mkdir /data/elk7/logstash/config/conf.d
chmod 777 -R /data/elk7/logstash
vi修改 logstash配置文件
vi /data/elk7/logstash/config/logstash.yml : 指定名称,host,es的地址hosts
新建文件syslog.conf,用来收集/var/log/messages
vi /data/elk7/logstash/config/conf.d/syslog.conf
权限 chmod 644 /var/log/messages
重新启动logstash
docker安装logstash
安装kibana
kibana是ES的可视化工具 使用docker安装,需要pull 与es对应版本的kibana,然后写入配置文件 指定名称,host,es的地址hosts,启动的时候开启默认的5601端口,并 将配置文件映射到容器中的config.yml位置,之后等待30秒或者docker logs -f kibana日志发现搭建成功,可以访问5601端口。
kibana的安装