XZK-JAVA-支线任务-031303-ElasticSearch 入门

本文介绍了ElasticSearch的基础知识,包括其作为智能搜索引擎的功能及其在ELK堆栈中的角色。此外,还详细阐述了ElasticSearch的优势,如分布式特性、数据高可用性、易于使用的API等,并解释了它如何用于全文检索、结构化搜索和数据分析。同时,文章还讨论了ElasticSearch的核心概念,如NRT、集群、索引等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.ElasticSearchElasticSearchElasticSearch的简介

ElasticSearch:智能搜索,分布式的搜索引擎,是ELK的一个组成,是一个产品,而且是非常完善的产品,ELK代表的是:E就是ElasticSearch,L就是Logstach,K就是kibana

E:EalsticSearch 搜索和分析的功能

L:Logstach 搜集数据的功能,类似于flume(使用方法几乎跟flume一模一样),是日志收集系统

K:Kibana 数据可视化(分析),可以用图表的方式来去展示,文不如表,表不如图,是数据可视化平台

2.ES的优点

1.分布式的功能

2、数据高可用,集群高可用

3.API更简单

4.API更高级。

5.支持的语言很多

6.支持PB级别的数据

7.完成搜索的功能和分析功能

基于Lucene,隐藏了Lucene的复杂性,提供简单的API

ES的性能比HBase高,咱们的竞价引擎最后还是要存到ES中的。

3.ES的作用

1)全文检索:

类似 select * from product where product_name like '%牙膏%'

类似百度效果(电商搜索的效果)

2)结构化搜索:

类似 select * from product where product_id = '1'

3)数据分析

类似 select count (*) from product

4.ES的核心概念

4.1 NRT(Near Realtime)近实时

4.2 cluster集群,ES是一个分布式的系统

ES直接解压不需要配置就可以使用,在hadoop1上解压一个ES,在hadoop2上解压了一个ES,接下来把这两个ES启动起来。他们就构成了一个集群。

在ES里面默认有一个配置,clustername 默认值就是ElasticSearch,如果这个值是一样的就属于同一个集群,不一样的值就是不一样的集群。

4.3 index 索引(索引库)

我们为什么使用ES?因为想把数据存进去,然后再查询出来。

我们在使用Mysql或者Oracle的时候,为了区分数据,我们会建立不同的数据库,库下面还有表的。

其实ES功能就像一个关系型数据库,在这个数据库我们可以往里面添加数据,查询数据。

ES中的索引非传统索引的含义,ES中的索引是存放数据的地方,是ES中的一个概念词汇

index类似于我们Mysql里面的一个数据库 create database user; 好比就是一个索引库

总结:

在默认情况下,我们创建一个库的时候,默认会帮我们创建5个主分片(primary shrad)和5个副分片(replica shard),所以说正常情况下是有10个分片的。

同一个节点上面,副本和主分片是一定不会在一台机器上面的,就是拥有相同数据的分片,是不会在同一个节点上面的。

所以当你有一个节点的时候,这个分片是不会把副本存在这仅有的一个节点上的,当你新加入了一台节点,ES会自动的给你在新机器上创建一个之前分片的副本。
 

 

 

JavaBase64是一种用于编码二进制数据的算法。在Java中,使用JavaBase64可以将字节数组编码为字符串,也可以将字符串解码回字节数组。如果要将JavaBase64解码的数据转化为图片并保存到本地,可以按照以下步骤进行: 1. 使用JavaBase64的解码方法将字符串解码为字节数组。 2. 创建一个文件输出流,指定保存图片的路径和文件名。 3. 将字节数组写入文件输出流,生成图片文件。 下面是一个示例代码: ``` import java.io.FileOutputStream; import java.io.IOException; import java.util.Base64; public class Base64Decoder { public static void main(String[] args) { String base64String = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAABlBMVEX///+ZmZkzrOgQAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAe1JREFUOMvNj1EOgzAMRO/8/NnW6kF9AH3WgRdVpEeT5HBUVXzIq+cOo7cMbiCP0AsT7lB28vJW5DbTz7h4z5Mm4XZK4dR7y7qO/fSCNxU9uABlzhm58QbyD5w9wL5xR8wZzo2UMTtGvQaL7Cp7x6j/ffPf6SxVWgEaxo6c+oKcDdP6fK1n4cRKoCkLqQ3aFAp+P5IyDZs8yKQbiqKtODl14G0jsv9gO3jbfjA35LHt2jy3CT1LwP7A9eGyfj3d5M+4COBv8IZfnd+Kll8H+Qb2oDcgAAAABJRU5ErkJggg=="; byte[] imageBytes = Base64.getDecoder().decode(base64String); try (FileOutputStream fos = new FileOutputStream("test.png")) { fos.write(imageBytes); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上述示例中,将base64编码的字符串转化为字节数组后,使用文件输出流将字节数组写入到本地文件“test.png”中。需要注意的是,如果文件已经存在,会覆盖原来的文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值