Elastic Stack

官⽹:https://www.elastic.co/cn/

包含了数据的整合 => 提取 => 存储 => 使⽤,⼀整套!

beats:从各种不同类型的⽂件 / 应⽤来 采集数据 a,b,c,d,e,aa,bb,cc

Logstash:从多个采集器或数据源抽取 / 转换数据,向 es 输送 aa,bb,cc

elasticsearch:存储、查询数据

kibana:可视化 es 的数据

1、安装 ES

elasticsearch:https://www.elastic.co/guide/en/elasticsearch/reference/7.17/setup.html kibana:https://www.elastic.co/guide/en/kibana/7.17/introduction.html 只要是⼀套技术,所有版本必须⼀致!!!此处⽤ 7.17

2、Elasticsearch 概念

你就把 Elasticsearch 当成 MySQL ⼀样的数据库。 Index 索引 => MySQL ⾥的表(table) 建表、增删改查(查询需要花费的学习时间最多) ⽤客户端去调⽤ Elasticsearch(3种) 语法:SQL、代码的⽅法(4种语法) ES 相⽐于 MySQL,能够⾃动帮我们做分词,能够⾮常⾼效、灵活的查询内容。

3、索引(倒排索引)

正向索引:理解为数据的⽬录,可以快速帮你找到对应的内容(怎么根据⻚码找到⽂章)

倒排索引:怎么根据内容找到⽂章

ES 先切词, 去倒排索引表找对饮的⽂章:⽂章A,B

4、操作步骤

   1. 下载 elasticsearch 和 kibana 的zip包,下载完成后解压出来

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

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

    1. 启动 elasticsearch 在 bin ⽬录下运⾏ .\bin\elasticsearch.bat

    1. 启动 kibana.bat 在 bin ⽬录下运⾏ .\bin\kibana.bat

ES 的⼏种调⽤⽅式

1)restful api 调⽤(http 请求) GET 请求:http://localhost:9200

可以模拟发送请求: curl -X GET "localhost:9200/?pretty"

ES 的启动端⼝:

   1. 9200:给外部⽤户(给客户端调⽤)的端⼝    

   2. 9300:给 ES 集群内部通信的(外部调⽤不了的)

2)kibana devtools ⾃由的对 ES 进⾏操作(本质也是 restful api) devtools 不建议⽣产环境使⽤

3)客户端调⽤ java 客户端、go 客户端 https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/7.17/_getting_started.html

访问 kibana

   1. 访问端⼝:http://localhost:5601/app/integrations/browse

5、语法:DSL

      json格式,好理解,和 http 请求最兼容,应⽤最⼴,也是我个⼈⽐较推荐的  

查询

DSL语法:https://www.elastic.co/guide/en/elasticsearch/reference/7.17/query-dsl.html(忘了就 查,不⽤背) 

语法:SQL

https://www.elastic.co/guide/en/elasticsearch/reference/7.17/sql-getting-started.html 学习成本低,但是可能需要插件⽀持、性能较差

语法:Painless Scripting language

编程式取值,更灵活,但是学习成本⾼

Mapping

理解为数据库的表结构,有哪些字段、字段类型

ES ⽀持动态 mapping,表结构可以动态改变,⽽不像 MySQL ⼀样必须⼿动建表,没有的字段就 不能插⼊

6、分词器

https://www.elastic.co/guide/en/elasticsearch/reference/7.17/test-analyzer.html

分词的⼀种规则

内置分词器:https://www.elastic.co/guide/en/elasticsearch/reference/7.17/analysisanalyzers.html 空格分词器:whitespace,结果:The、quick、brown、fox.

IK 分词器(ES 插件)

中⽂友好:https://github.com/medcl/elasticsearch-analysis-ik

下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.17.7(注意版本 ⼀致) 思考:怎么样让 ik 按⾃⼰的想法分词? 回答:⾃定义词典

步骤

1. 在 elasticsearch-7.17.9 ⽬录下新建 plugins ⽬录

2. 在 plugins ⽬录下新建 ik ⽬录

3. 将下载的 zip 包解压到 ik ⽬录下

4. 将 elasticsearch-analysis-ik-7.17.7 ⽬录中的所有内容移到 ik ⽬录下

5. 重启 ES,发⽣错误:插件版本不匹配

解决⽅案:https://github.com/medcl/elasticsearch-analysis-ik/issues/996 下载相近的版本,解压后修改plugin-descriptor.properties⽂件⾥⾯的elasticsearch.version就可以。

修改后,ES 启动成功,重新在 kibana 中运⾏分词器测试,成功。 命令⾏中显示加载 ik 插件

6. 测试 ik_smart 分词器,结果

ES 调⽤⽅式

Java 操作 ES

3 种: 1. ES 官⽅的 Java API https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/7.17/introduction.html 快速开始:https://www.elastic.co/guide/en/elasticsearch/client/java-apiclient/7.17/connecting.html

2. ES 以前的官⽅ Java API,HighLeavelRestClient(已废弃,不建议⽤)

3. Spring Data Elasticsearch spring-data 系列:spring 提供的操作数据库的框架

spring-data-redis:操作 redis 的⼀套⽅法 spring-data-mongodb:操作 mongodb的⼀套⽅法 spring-data-elasticsearch:操作 elasticsearch 的⼀套⽅法

官⽅⽂档:https://docs.spring.io/spring-data/elasticsearch/docs/4.4.10/reference/html/ ⾃定义⽅法: ⽤户可以指定接⼝的⽅法名称,框架帮你⾃动⽣成查询

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值