ElasticSearch

链接:https://pan.baidu.com/s/1WCaI25ZQLAwrCOmyh1pZow 
提取码:bg1i 
--来自百度网盘超级会员V5的分享

简称ES,是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时存储,检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB(大数据级)的数据.ES使用Java开发,内部使用Lucene(Java开发)做为器核心来实现所有索引和搜索功能.通过简单的RestFul API来隐藏其内部Lucene的复杂性,让全文搜索变得简单.

ELK技术:Elastic Search+Logstash+Kibana(了解下)  处理可视化大规模日志

ElasticSearch_第1张图片

哪些地方用到了ElasticSearch   维基百科等等

ElasticSearch_第2张图片

ElasticSearch和Solr

都是通过Lucene实现的.

1.单纯对已有数据进行搜索时,Solr更快

2.当实时建立索引时,Solr会产生IO阻塞,查询性能较差,ElasticSearch有明显优势

3.随着数据量的增加,Solr的搜索效率会变得低而ElasticSearch却没有明显的变化

4.Solr利用Zooker进行分布式管理,而ElasticSearch自身带有分布式协调管理功能

5.Solr支持更多数据格式.如:JSON,XML,CSV,而ElasticSearch仅支持JSON格式

成年人不做选择   可以不用,不能不会

ElasticSearch安装(这里全在WINDOWS上):

JDK版本8或以上. ElasticSearch客户端界面工具(Kibana)

 中文官网:简体中文 | Elastic

ElasticSearch_第3张图片ElasticSearch_第4张图片

这里用7.6.1版本    注意Kibana版本要和ElasticSearch一致

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-windows-x86_64.zip

https://artifacts.elastic.co/downloads/kibana/kibana-7.6.1-windows-x86_64.zip

这里需要前端环境:Nodejs python

解压即用

ElasticSearch_第5张图片

目录介绍

ElasticSearch_第6张图片默认Elastic启动用1G内存  如果内存比较小  可以在jvm.options文件设置

ElasticSearch_第7张图片

启动ES

双击

ElasticSearch_第8张图片

ElasticSearch_第9张图片

默认公开端口是9200(就是你通过RestFull API去调用的端口)    内部Elastic通信端口是9300

ElasticSearch_第10张图片

访问测试

访问本机 localhost:9200端口试下

ElasticSearch_第11张图片

安装可视化界面   现在使用最多的是 elasticserach-head插件(此插件依赖Nodejs)

elasticserach-head是一款开源的可视化的elasticsearch可视化工具

github地址    这是个前端项目 一次要有nodejs环境

GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster

ElasticSearch_第12张图片ElasticSearch_第13张图片

解压

ElasticSearch_第14张图片解压之后

ElasticSearch_第15张图片ElasticSearch_第16张图片

ElasticSearch_第17张图片

是淘宝镜像过期了

npm config set registry https://registry.npmmirror.com

ElasticSearch_第18张图片

ElasticSearch_第19张图片

ElasticSearch_第20张图片

查看端口情况

netstat -ano | findstr :9100

杀掉指定PID进程

taskkill /F /PID 6964

看了下  是鼠标跟新占用了

启动

npm run start

ElasticSearch_第21张图片

访问

localhost:9100

ElasticSearch_第22张图片

先关闭ElasticSearch 

在ElasticSearch的config目录里的elasticsearch.yml文件中配置

http.cors.enabled: true
http.cors.allow-origin: "*"

注意空格

ElasticSearch_第23张图片

重启ElasticSearch

ElasticSearch_第24张图片

ElasticSearch_第25张图片ElasticSearch_第26张图片

这里可以创建索引(暂时可以理解成建立数据库   文档是库中的数据)

ElasticSearch_第27张图片ElasticSearch_第28张图片

暂时把elasticsearch-head当成一个创建索引(创建数据库) 数据展示工具 

ElasticSearch_第29张图片

关于查询 后期会放到kibana中去做

ElasticSearch_第30张图片

Kibana安装

先了解下ELK->ElasticSearch+Logstash+Kibana

ElasticSearch:是一个基于Lucene,分布式,通过RestFul方式进行交互的近实时搜索平台框架.像百度,谷歌这种大数据全文搜索引擎的场景都可以使用ElasticSearch做为底层支持框架.

Logstash:是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/Redis/ElasticSearch/Kafka等) 

Kibana:可以将Elasticsearch的数据通过友好的页面展示出来,提供实时分析功能

注意:很多人认为ELK它是一个日志分析架构技术栈.实际上ELK支持任何数据分析和收集.只不过日志分析和收集更具有代表性.但非唯一性

总的来讲就是 Logstash(收集清洗数据)->ES(存储分析数据)->Kibana(可视化展示数据)

Kibana也是解压即可以用解压比较慢(内容很多)

ElasticSearch_第31张图片

双击启动ElasticSearch_第32张图片

默认启动端口5601

ElasticSearch_第33张图片

注意:Kibana启动后  在elasticsearch-head中多了这三个

ElasticSearch_第34张图片

访问

localhost:5601

ElasticSearch_第35张图片

ElasticSearch_第36张图片

Kibana汉化   打开config里的kibana.yml     然后重启Kibana

ElasticSearch_第37张图片

ElasticSearch_第38张图片

ES核心概念:

ElasticSearch是面向文档的

ElasticSearch_第39张图片

物理设计:ElasticSearch在后台把每个索引划分成多个分片.每个分片可以在集群中不同服务器迁移

逻辑设计:一个索引类型中,包含多个文档.当我们搜索一个文档时,通过索引->类型->文档ID的顺序搜索到某个具体的文档.ID不必是整数,实际是一个字符串.

Lucene用的是倒排索引

一个索引就好比一个数据库

ElasticSearch的索引和Lucene索引对比

ElasticSearch中索引被分为多个分片,每个分片是一个Lucene索引.所以一个ElasticSearch索引是由多个Lucene索引组成的.

IK分词器插件:

分词:即把一段中文或者别的划分为一个个的关键字,搜索时候会把信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个个匹配操作.默认的中文分词是将每个字看成一个词.比如"阿米阿米啊呜"会被分为"阿","米","阿","米","啊","呜".这样可能不符合我们要求.所以需要安装分词器来解决这个问题

IK分词器主要解决中文

IK分词器提供了两种分词算法:

ik_start:最少切分

ik_max_word:最细粒度划分

Github地址:

GitHub - medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary.

Release v7.6.1 · medcl/elasticsearch-analysis-ik · GitHubElasticSearch_第40张图片

ElasticSearch_第41张图片

选择和ElasticSearch版本相同的

ElasticSearch_第42张图片

在ElasticSearch的plugins目录新建ik文件夹  将文件加压到ik文件

ElasticSearch_第43张图片

关了所有

一个个重启

ElastisSearch启动时候多了个插件

ElasticSearch_第44张图片

启动Kibana

ElasticSearch_第45张图片

你也可以用postMan   专业的事让专业工具做  Kibana本身就是干这个的

IK分词器提供了两种分词算法:

ik_start:最少切分

ik_max_word:最细粒度划分

ElasticSearch_第46张图片

IK分词器设置数据字典

ElasticSearch_第47张图片

ElasticSearch_第48张图片

重启ElasticSearch

ElasticSearch_第49张图片

重启Kibana

再测试

ElasticSearch_第50张图片

ElasticSearch_第51张图片

创建索引

启动elasticsearch-head

ElasticSearch_第52张图片ElasticSearch_第53张图片

ElasticSearch_第54张图片ElasticSearch_第55张图片

ElasticSearch_第56张图片

剩下三个库是Kibana自带的

ElasticSearch_第57张图片

ElasticSearch_第58张图片

创建索引

PUT /索引名/类型名/文档id    PUT /test/type1/1   (POST /test/type1/1 也可以  )

POST /test/type1 就是随机文档ID

{请求体}

ElasticSearch_第59张图片

完成了自动增加索引 数据也成功添加   初期将索引当成数据库

那么可以有个想法,把所有数据放进去  以后在查出来

ElasticSearch_第60张图片ElasticSearch_第61张图片

关于字段类型

ElasticSearch_第62张图片

如何指定字段类型  上面我们指定了字段名并没有指定字段类型

创建索引并给索引加字段名和字段类型

ElasticSearch_第63张图片ElasticSearch_第64张图片

获取索引信息(数据库信息)

GET /test2

ElasticSearch_第65张图片

查看默认信息

ElasticSearch_第66张图片ElasticSearch_第67张图片

注意 keyword  表示不能分割  分词器也不能分割

ElasticSearch_第68张图片

GET /_cat/health

ElasticSearch_第69张图片

GET /_cat/indices

ElasticSearch_第70张图片

修改索引

方式1

ElasticSearch_第71张图片

方式2

如果用POST /test/type1/1

        {

                "doc":{

                                "name":"ddddd"

                        }

        }

这样的话  其他数据就都没了.只有name

需要加上_update

POST /test/type1/1/_update (这种方式效率更高)

ElasticSearch_第72张图片ElasticSearch_第73张图片

删除索引 (好比删除库,自然数据也没了)

DELETE /xxxx

ElasticSearch_第74张图片

上面已经清空了所有

下面放些数据进去

ElasticSearch_第75张图片

简单的条件查询

ElasticSearch_第76张图片

 "_score" : 是匹配度

ElasticSearch_第77张图片

复杂查询条件

ElasticSearch_第78张图片

输出结果不想太多 java中可以根据_score去做匹配

ElasticSearch_第79张图片

_source指定要查的字段是什么   结果过滤

ElasticSearch_第80张图片

排序 desc  asc

ElasticSearch_第81张图片

分页

ElasticSearch_第82张图片

多条件查询   must  好比mysql里的and  多条件匹配

ElasticSearch_第83张图片

ElasticSearch_第84张图片

ElasticSearch_第85张图片

过滤器 filter                gt:大于     gle:大于等于   lt:<小于   lte:小于等于              

ElasticSearch_第86张图片

ElasticSearch_第87张图片

匹配多个条件

ElasticSearch_第88张图片

SpringBoot整合ElasticSearch

创建一个SpringBoot项目  我这里导入了lombok elasticsearch  springweb依赖

由于本机用的ElasticSearch是7.6.1版本  所以修改了下

ElasticSearch_第89张图片

ElasticSearch_第90张图片

如果是集群就配置多个

ElasticSearch_第91张图片

ElasticSearch_第92张图片

ElasticSearch_第93张图片

只能判断存不存在ElasticSearch_第94张图片

ElasticSearch_第95张图片

对比下API设计

ElasticSearch_第96张图片

下面是对文档的CRUD  需要发送JSON数据  创建实体类

引入fastJson

ElasticSearch_第97张图片

ElasticSearch_第98张图片

ElasticSearch_第99张图片

java爬取数据:解析网页jsoup依赖    获取请求返回的页面信息,赛选出我们想要的数据

你可能感兴趣的:(elasticsearch,大数据,搜索引擎)