ElasticSearch

链接:https://pan.baidu.com/s/1WCaI25ZQLAwrCOmyh1pZow

提取码:bg1i

--来自百度网盘超级会员V5的分享

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

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

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

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

这里用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

解压即用

目录介绍

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

启动ES

双击

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

访问测试

访问本机 localhost:9200端口试下

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

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

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

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

解压

解压之后

是淘宝镜像过期了

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

查看端口情况

netstat -ano | findstr :9100

杀掉指定PID进程

taskkill /F /PID 6964

看了下 是鼠标跟新占用了

启动

npm run start

访问

localhost:9100

先关闭ElasticSearch

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

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

注意空格

重启ElasticSearch

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

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

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

Kibana安装

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

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

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

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

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

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

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

双击启动

默认启动端口5601

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

访问

localhost:5601

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

ES核心概念:

ElasticSearch是面向文档的

物理设计: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 · GitHub

选择和ElasticSearch版本相同的

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

关了所有

一个个重启

ElastisSearch启动时候多了个插件

启动Kibana

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

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

ik_start:最少切分

ik_max_word:最细粒度划分

IK分词器设置数据字典

重启ElasticSearch

重启Kibana

再测试

创建索引

启动elasticsearch-head

剩下三个库是Kibana自带的

创建索引

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

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

{请求体}

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

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

关于字段类型

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

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

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

GET /test2

查看默认信息

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

GET /_cat/health

GET /_cat/indices

修改索引

方式1

方式2

如果用POST /test/type1/1

{

"doc":{

"name":"ddddd"

}

}

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

需要加上_update

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

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

DELETE /xxxx

上面已经清空了所有

下面放些数据进去

简单的条件查询

"_score" : 是匹配度

复杂查询条件

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

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

排序 desc asc

分页

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

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

匹配多个条件

SpringBoot整合ElasticSearch

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

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

如果是集群就配置多个

只能判断存不存在

对比下API设计

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

引入fastJson

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

相关推荐
光算科技29 分钟前
如何用WordPress和Shopify提升SEO表现?
搜索引擎
SafePloy安策1 小时前
ES信息防泄漏:策略与实践
大数据·elasticsearch·开源
学术搬运工1 小时前
【珠海科技学院主办,暨南大学协办 | IEEE出版 | EI检索稳定 】2024年健康大数据与智能医疗国际会议(ICHIH 2024)
大数据·图像处理·人工智能·科技·机器学习·自然语言处理
涔溪1 小时前
Ecmascript(ES)标准
前端·elasticsearch·ecmascript
Matrix702 小时前
HBase理论_背景特点及数据单元及与Hive对比
大数据·数据库·hbase
B站计算机毕业设计超人3 小时前
计算机毕业设计Python+大模型农产品价格预测 ARIMA自回归模型 农产品可视化 农产品爬虫 机器学习 深度学习 大数据毕业设计 Django Flask
大数据·爬虫·python·深度学习·机器学习·课程设计·数据可视化
Carl_奕然4 小时前
【大数据算法】MapReduce算法概述之:MapReduce基础模型
大数据·算法·mapreduce
csdn5659738504 小时前
Elasticsearch 重建索引 数据迁移
elasticsearch·数据迁移·重建索引
天幕繁星4 小时前
docker desktop es windows解决vm.max_map_count [65530] is too low 问题
windows·elasticsearch·docker·docker desktop
Elastic 中国社区官方博客5 小时前
Elasticsearch 8.16:适用于生产的混合对话搜索和创新的向量数据量化,其性能优于乘积量化 (PQ)
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索