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依赖 获取请求返回的页面信息,赛选出我们想要的数据

相关推荐
Elastic 中国社区官方博客26 分钟前
在不到 5 分钟的时间内将威胁情报 PDF 添加为 AI 助手的自定义知识
大数据·人工智能·安全·elasticsearch·搜索引擎·pdf·全文检索
玉成22644 分钟前
Elasticsearch:索引mapping
大数据·elasticsearch·搜索引擎
运维&陈同学1 小时前
【Logstash01】企业级日志分析系统ELK之Logstash 安装与介绍
大数据·linux·elk·elasticsearch·云原生·自动化·logstash
菠萝派爱跨境4 小时前
利用轮换IP的强大功能
大数据·服务器·网络·网络协议·tcp/ip·ip
司晓杰4 小时前
使用 Flink CDC 构建 Streaming ETL
大数据·数据仓库·flink·etl
申尧强4 小时前
flink异步流(async stream)解析
大数据·flink
core5124 小时前
flink cdc oceanbase(binlog模式)
大数据·flink·binlog·oceanbase·安装·cdc
申尧强4 小时前
flink state源码解析
大数据·flink
GIS数据转换器7 小时前
城市安全风险综合监测预警平台
大数据·人工智能·安全·3d·智慧城市
罗仲虎7 小时前
CDP集群安全指南-动态数据加密
大数据·运维·安全·cloudera