ElasticSearch深入解析(三):Elasticsearch 7的安装与配置、Kibana安装
文章目录
- 〇、简介
- 1.Elasticsearch简介
- 2.典型业务场景
- 3.数据采集工具
- 4.名词解释
- 一、安装
- 1.使用docker
- (1)创建虚拟网络
- (2)Elasticsearch安装步骤
- 2.使用压缩包
- 二、配置
- 1.目录介绍
- 2.配置文件介绍
- 3.elasticsearch.yml节点配置
- 4.jvm.options堆配置
- ==问题:为什么说堆内存不要超过机器内存的一半?==
- **(1)堆(Heap):ES的“运算大脑”**
- **(2)Lucene:依赖操作系统的“静态数据仓库”**
- **(3)内存分配的黄金法则:50% vs 50%**
- **(4)进阶优化:按需缩减堆大小**
- 5.日志配置
- (1) `elasticsearch.yml`
- 常见的日志配置选项
- (2) `log4j2.properties`
- 基本结构
- 重要配置项解释
- 修改日志配置
- 二、可视化工具Kibana
- 1.介绍
- 2.安装(Docker)
- 参考
Elasticsearch版本:7.12.1
Kibana版本:7.12.1
操作系统:centos7
〇、简介
1.Elasticsearch简介
- 什么是Elasticsearch:
Elasticsearch是一个提供可扩展的企业级搜索服务的工具。它主要提供了大数据搜索和分析服务。相较于传统的关系数据库,Elasticsearch具有更高的性能、易扩展性和良好的容错性。
- 传统数据库的局限性:
传统的关系数据库在处理大数据时存在明显的短板,主要表现在性能差和扩展难的问题上。即使采用一定的方法去优化SQL,查询速度依然可能很慢,而关系数据库的集群搭建也不太容易,查询性能在很多业务场景中依然没有保障。
- Elasticsearch的优势:
相较于关系数据库,Elasticsearch存在几个明显的优点:高性能、易扩展和良好的容错性。它使用倒排索引作为存储结构并大量使用缓存机制,能够非常快速地从海量的数据中查询出需要的结果。搭建多个Elasticsearch节点组成一个集群对外提供分布式的搜索服务也非常简单,而且每个索引可以配置副本机制,即使Elasticsearch有部分服务器宕机也不用担心数据丢失。
2.典型业务场景
Elasticsearch在以下几个典型的业务场景中有着广泛的应用:
- 在线实时日志分析:
使用Elasticsearch分析线上日志是十分常见的操作,从最初的ELK(Elasticsearch、Logstash、Kibana)平台到如今的Elastic Stack都包含开箱即用的在线日志采集、存储、分析的功能,使用起来快捷、方便。
- 物联网数据监控:
对于各种传感器设备、可穿戴设备实时产生的各种需要监控和分析的数据,由于数据量很大且实时性要求较高,很适合用Elasticsearch来进行技术选型,Elasticsearch在智慧交通、智能家居、公共安全、运维监控等领域有着广泛的应用。
- 文献检索和文献计量:
Elasticsearch是一种出色的搜索引擎,很适合用于电子图书馆、论文检索系统所需的多样化信息检索服务,同时Elasticsearch强大的数据分析能力为文献计量提供了便利的统计接口。
- 商务智能大屏展示:
Elasticsearch通过有效的大数据分析和研判,使用多维度的钻取分析为用户提供决策支持和趋势预测,其在智慧公安、智慧交通、智慧水利等领域的大屏展示系统中应用尤其普遍。
- 数据分析型应用程序中的应用:
Elasticsearch很适合读多写少的数据分析型应用程序,特别适用于OLAP数据分析相关的项目。在这种情况下,考虑到Elasticsearch本身具备数据存储的能力,可以作为数据源。
3.数据采集工具
除了使用应用程序写入Elasticsearch,你还可以使用官方提供的数据采集工具Logstash或者第三方的ETL工具把数据写入Elasticsearch。这些工具功能十分丰富,包括:
- Logstash:早期的数据采集、转换工具,可以很方便地把各种数据写入Elasticsearch。
- Beats家族:一系列命名包含beat的轻量级数据采集器,包括Filebeat、Metricbeat、Packetbeat、Winlogbeat、Heartbeat和Auditbeat等,功能各异,但都能用来采集各种数据并写入Elasticsearch。
4.名词解释
-
集群(cluster):多个安装了Elasticsearch的服务器如果拥有相同的集群名称,则它们属于同一个集群,对外提供统一的服务。在一个集群中,只有一个主节点,当主节点宕机时需要重新“选举”出新的主节点来维持集群正常运转。
-
节点(node):一个节点就是一台安装了Elasticsearch的服务器,它是组成集群的基本单元。
-
索引(index):索引是存储数据的基本单元,在大多数情况下,可以把它理解为关系数据库中的表。
-
文档(document):文档是写入索引的基本单元,一个文档就是索引中的一条数据。写入索引的文档是JSON格式的文本字符串,里面包含各个字段的信息,保存在索引的_source元数据中。
-
分片(shard):分片分为主分片和副本分片,每个索引拥有至少一个主分片和零个或多个副本分片,一个分片本质上是一个Lucene索引。当整个集群的节点数量增加或减少时,为了让分片在每个节点上分布得比较均匀,通常会使分片在集群中移动,这个过程也就是分片的分配。在任何时候,索引的主分片和它对应的副本分片不能位于同一个节点上,这是为了保证节点宕机时,主分片和副本分片不会同时丢失。
-
主分片(primary shard):当文档数据写入索引时,会首先选择一个主分片进行写入,再把数据同步到副本分片。主分片的数目在建立索引时就已经固定,无法修改。如果一个索引拥有的主分片越多,那么它能存储的数据越多,主分片的个数通常跟索引的数据量成正相关。
-
副本分片(replica shard):副本分片是主分片的一个副本,它能够分担一些数据搜索的请求,从而提高搜索的吞吐量。同时,副本分片还具备容灾备份的能力,当主分片所在的节点宕机时,副本分片可以被选举为主分片来保持数据的完整性。另外,索引的副本分片数目可以随时修改。
-
分片恢复(shard recovery):分片恢复指的是把一个分片的数据完全同步到另一个分片的过程。这个过程伴随有分片的创建和分配,在集群启动时或者节点数目改变时自发完成。只有分片恢复完全结束,副本分片才能对外提供搜索服务。
-
索引缓冲区(index buffer):索引缓冲区用于在内存中存储最新写入索引的数据,只有在索引缓冲区写满的时候,这些新的数据才会被一次性写入磁盘。
-
传输模块(transport module):当节点接收请求后不能处理或无法单独处理时,节点需要把请求转发给其他节点,这是同一个集群中不同节点之间互相通信的手段,这个过程由传输模块来完成。
-
网关模块(gateway module):网关模块存储着集群的信息和每个索引分片的持久化数据。默认使用的是本地网关,它会把数据存储在本地文件系统中,你还可以配置网关模块使用HDFS或其他存储手段来持久化Elasticsearch的数据。
-
节点发现模块(node discovery module):节点发现模块用于节点之间的互相识别,可把新节点加入集群。这个过程需要使用传输模块来完成节点之间的通信。
-
线程池(thread pool):Elasticsearch内置了多个线程池用于处理不同的操作请求。例如,analyze线程池用于处理文本分析的请求,write线程池用于处理索引数据的写入请求,search线程池用于处理搜索请求。你可以配置线程池的大小以改变其对这些请求的处理能力。
一、安装
1.使用docker
首先,你需要安装一个docker,关于Docker的使用我在《玩转Docker》系列博客中已经介绍过了。
(1)创建虚拟网络
因为需要使用 Docker 部署 ElasticSearch 和 Kibana ,并且它们相互之间需要进行网络通信,所有首先创建一个虚拟网络,然后在运行容器的时候,加入这个网络即可。
docker network create es-net
(2)Elasticsearch安装步骤
以下是使用Docker安装Elasticsearch的步骤:
- 拉取Elasticsearch镜像:打开终端或命令行界面,运行以下命令来拉取Elasticsearch的官方镜像:
docker pull elasticsearch/elasticsearch:7.12.1
这将会从Docker Hub上拉取Elasticsearch 7.12.1版本的镜像到本地环境。
- 创建并运行Elasticsearch容器:运行以下命令来创建并运行Elasticsearch容器
docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \--privileged \--network es-net \-p 9200:9200 \-p 9300:9300 \
elasticsearch:7.12.1
这个命令中,-d
参数表示以后台模式运行容器,–name elasticsearch
指定容器的名称,-p 9200:9200 -p 9300:9300
指定端口映射,-e "discovery.type=single-node"
设置Elasticsearch的单节点模式。--network es-net
指定加入虚拟网络。
- 验证Elasticsearch是否运行:在浏览器中访问
localhost:9200
如果一切正常,将会看到Elasticsearch的信息返回,表明Elasticsearch已经成功运行。
注意:
这里使用的是单节点模式的Elasticsearch,如果你需要搭建多节点集群,还需要进行额外的配置。
docker安装的Elasticsearch的目录文件默认是在容器中的/usr/share/elasticsearch
目录下。
2.使用压缩包
注意,这一节我安装示范版本为7.2.0,操作系统为centos。
安装Elasticsearch 7.2.0 在 CentOS 上的完整步骤如下:
- 更新系统:首先,确保你的 CentOS 系统是最新的。可以通过以下命令更新系统:
sudo yum update
- 安装 Java:Elasticsearch 运行需要 Java 环境,确保你的系统已经安装了 Java。你可以通过以下命令检查是否已经安装了 Java:
java -version
如果没有安装 Java,你可以通过以下命令安装 OpenJDK:
sudo yum install java-1.8.0-openjdk
- 下载并安装 Elasticsearch:使用 wget 命令下载 Elasticsearch 7.2.0 的安装包,并解压安装:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.0-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.2.0-linux-x86_64.tar.gz
- 配置 Elasticsearch:进入解压后的 Elasticsearch 目录,编辑配置文件 elasticsearch.yml:
cd elasticsearch-7.2.0/config
vi elasticsearch.yml
在配置文件中,你可以设置集群名称、节点名称、监听地址等参数。
- 创建非root用户
useradd es
passwd es #输入密码
6.启动 Elasticsearch 服务:
su es # 切换到非root用户
./安装目录/elasticsearch-7.2.0/bin/elasticsearch
- 验证 Elasticsearch:使用 curl 命令验证 Elasticsearch 是否正常运行:
curl -X GET "你的电脑ip:9200/"
如果一切顺利,你应该能够看到 Elasticsearch 的信息返回。
通过以上步骤,你应该能够在 CentOS 上成功安装 Elasticsearch 7.2.0,并启动 Elasticsearch 服务。记得根据实际情况修改配置文件和路径,以确保一切正常运行。
二、配置
1.目录介绍
在容器外,进入正在运行的Elasticsearch容器的命令行界面:
docker exec -it es /bin/bash
进入安装目录:
cd /usr/share/elasticsearch
- 安装目录介绍:
● bin:包含与Elasticsearch有关的各种可执行脚本,很多都是批处理文件。
● config:包含各种节点的配置文件,elasticsearch.yml文件也在这个目录下,可以用于配置许多重要的参数。
● data:默认的数据存放目录,包含写入Elasticsearch的数据文件。
● jdk:包含一个自带的JDK,如果你不用自己计算机中的JDK,那么这个JDK就会派上用场。
● lib:包含Elasticsearch运行时需要用到的JAR包。
● logs:默认的日志存放目录,包含Elasticsearch运行时产生的各种日志文件。
● modules:包含Elasticsearch内置的各种模块,每个模块都是一个插件。
● plugins:包含用户添加的第三方插件,例如IK分词器插件就需要安装到这个目录下。
2.配置文件介绍
查看配置文件:
cd /usr/share/elasticsearch/config
ls
在Elasticsearch的config文件夹下,一共有3个重要的配置文件,其中elasticsearch.yml
用于配置节点的参数,jvm.options
用来配置Elasticsearch运行时占用的堆内存大小,log4j2.properties
用来配置Elasticsearch运行时的日志参数。
那些可以通过调用REST接口,在节点运行时动态修改的配置叫作动态配置;配置在elasticsearch.yml文件中,只能在集群重启后才能生效的配置叫作静态配置。
- 配置优先级:
当你需要修改集群节点的配置信息时,通常有以下3种方法。
(1)调用集群节点配置的REST接口并设置配置项临时生效,该配置项在集群重启后失效。
(2)调用集群节点配置的REST接口并设置配置项持久生效,该配置项在集群重启后依然有效。
(3)直接把集群节点配置项写在elasticsearch.yml文件中。
如果一个配置项没有采用以上3种方法进行配置,则会采用集群节点默认的配置。如果同一个配置项在多个地方都配置过,而且配置得不一样,则第一种临时配置的优先级最高,第二种持久生效的配置次之,写在elasticsearch.yml文件中的配置优先级最低。
通常比较好的做法是,对于整个集群范围内生效的动态配置直接使用REST接口进行控制,对于每个节点各自不同的配置(例如IP地址)直接在节点的elasticsearch.yml中配置,这样做可以避免遗漏某个节点的配置而引起错误。
为了方便,我们在容器外面把elasticsearch的config目录复制出来查看:
语法为:docker cp 容器id:容器中的目录 主机上的目录
docker cp 1536112ad6f4:/usr/share/elasticsearch/config ./
然后就可以在容器外面查看各个配置文件了。
3.elasticsearch.yml节点配置
这是elasticsearch.yml最初的配置,指定了集群名和节点host:
cluster.name: "docker-cluster"
network.host: 0.0.0.0
下面我介绍一下其他比较重要的配置。
- path.data和path.logs
这两个配置项用于配置数据目录和日志目录,在生产环境中,由于文件较大,应尽量配置存储容量大的目录,可以配置多个目录。
path:data:- /esdata1- /esdata2logs:- /var/log/eslog1- /var/log/eslog2
- bootstrap.memory_lock
这是用于操作系统内存锁的配置项,开启内存锁可以防止操作系统中的缓存数据被交换到外存而导致查询性能大幅下降,在生产环境中,这个配置项一定要设置为true。
bootstrap.memory_lock: true
注意:在CentOS中,直接设置bootstrap.memory_lock为true可能会因为缺少权限并不能立即开启内存锁,还需要一些额外的配置。
- network.host和http.port
即服务的ip和端口
network.host: 192.168.9.105
http.port: 9201
- discovery.seed_hosts和cluster.initial_master_nodes
这两个配置项在单节点环境下保持默认设置即可,当需要搭建集群时,这两个配置项对于节点的发现和主节点的选举至关重要。discovery.seed_hosts用于配置一组IP地址或主机名,这组地址的列表是集群中的主候选节点的列表,当一个节点启动时会尝试与该列表中的各个主候选节点建立连接,如果连接成功并找到主节点就把该节点加入集群。
discovery.seed_hosts:- 192.168.9.10- 192.168.9.11- host3.com
cluster.initial_master_nodes用于明确地指定一组节点名称的列表,这个列表也是主候选节点的列表,Elasticsearch集群在第一次启动时会读取该列表初始化投票配置,该配置将用于主节点的选举。在这个列表中,配置的每个节点的名称要与该节点的node.name配置的名称保持一致。
cluster.initial_master_nodes: ["node-1", "node-2"]
4.jvm.options堆配置
Elasticsearch的堆内存配置在性能调优中非常重要。以下是一些关于Elasticsearch堆内存配置的要点:
- 分配合适的堆内存大小:
Elasticsearch的堆内存大小直接影响其性能。如果设置得太小,可能查询时内存不够而导致服务宕机;如果设置得太大,又会超过JVM用于压缩对象指针的阈值而导致内存浪费。建议将堆大小配置为服务器可用内存的50%,但不要超过30GB(压缩对象指针的阈值)。过小的堆内存会导致频繁的垃圾回收,而过大的堆内存可能会导致长时间的垃圾回收暂停,影响性能。
-Xms4g
-Xmx4g
Xms代表最小的堆内存大小,Xmx代表最大的堆内存大小,这两个值必须设置成一样的。
问题:为什么说堆内存不要超过机器内存的一半?
在Elasticsearch的性能优化中,内存分配是关键一环,而其中最需要平衡的是两大内存使用者:Elasticsearch堆和Lucene。
内存分配的本质是“协作而非独占”:Elasticsearch的性能优化并非“堆越大越好”,而是需要平衡自身运算需求与Lucene的缓存需求。通过为操作系统保留足够内存,让Lucene借助系统级缓存加速数据访问,才能实现整体性能的最大化。
(1)堆(Heap):ES的“运算大脑”
- 作用:堆是Elasticsearch自身的内存空间,用于存储各类动态数据结构(如缓存、实时数据等),支持快速读写操作。
- 重要性:堆的大小直接影响ES的实时处理能力,但若分配过大,会导致垃圾回收(GC)变慢,反而拖累性能。
(2)Lucene:依赖操作系统的“静态数据仓库”
Lucene是ES底层的搜索引擎库,其设计理念是利用操作系统的内存缓存机制来优化性能,核心特点如下:
- 数据存储形式:Lucene将数据存储在**不可变的段文件(Segment Files)**中(例如倒排索引、正排索引)。
- 倒排索引:用于全文搜索(如关键词匹配);
- 正排索引:用于聚合统计(如数值计算、分组分析)。
- 缓存优势:由于段文件一旦生成就不会修改,操作系统会自动将频繁访问的“热段”缓存到内存中,实现快速读取。
- 关键依赖:Lucene的性能高度依赖操作系统的内存分配。如果ES占用了全部内存,Lucene将无法利用缓存,导致搜索和聚合速度大幅下降。
(3)内存分配的黄金法则:50% vs 50%
- 标准策略:
将服务器可用内存的 50% 分配给ES堆,剩余 50% 留给操作系统(供Lucene缓存使用)。- 例:若服务器有32GB内存,ES堆设为16GB,剩下16GB由操作系统管理,用于缓存Lucene段文件。
- 背后逻辑:
- 留给Lucene的“空闲内存”并非真正空闲,而是由操作系统自动调度,优先缓存高频访问的数据段,提升查询效率;
- 限制堆大小可避免ES因内存过大导致GC卡顿,同时让Lucene充分利用系统级缓存,实现“双优”平衡。
(4)进阶优化:按需缩减堆大小
如果业务场景满足以下条件,可进一步减少堆内存:
- 无需对文本字段做聚合(如关闭
text
类型的fielddata
功能)。 - 优化效果:
- 更小的堆 → 更快的GC效率(减少停顿时间);
- 更多内存留给Lucene → 更多段文件被缓存,搜索和索引性能进一步提升。
5.日志配置
Elasticsearch 使用日志记录来帮助管理员监控和调试系统。日志配置文件通常位于 Elasticsearch 安装目录的 config
文件夹中,文件名为 elasticsearch.yml
和 log4j2.properties
。这两个文件共同控制 Elasticsearch 的日志行为。
(1) elasticsearch.yml
elasticsearch.yml
是 Elasticsearch 的主配置文件,其中包含了一些基本的日志配置选项。虽然大多数详细的日志配置是在 log4j2.properties
中定义的,但 ellasticsearch.yml
也提供了几个与日志相关的设置。
常见的日志配置选项
-
path.logs
: 指定日志文件的存储路径。path.logs: /var/log/elasticsearch
-
logger.level
: 设置日志的全局级别。默认值为INFO
,可以设置为DEBUG
,TRACE
,WARN
,ERROR
等。logger.level: INFO
-
bootstrap.memory_lock
: 如果设置为true
,Elasticsearch 将尝试锁定内存,防止被交换到磁盘,这可能会影响日志记录的性能。bootstrap.memory_lock: false
(2) log4j2.properties
log4j2.properties
是 Elasticsearch 使用的详细日志配置文件。Log4j2 是一个强大的日志框架,提供了丰富的配置选项来控制日志的格式、输出位置和级别。
基本结构
# 设置根日志级别
rootLogger.level = info
rootLogger.appenderRef.console.ref = ConsoleAppender
rootLogger.appenderRef.rolling.ref = RollingFileAppender# 控制台日志配置
appender.console.type = Console
appender.console.name = ConsoleAppender
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n# 文件日志配置
appender.rolling.type = RollingFile
appender.rolling.name = RollingFileAppender
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log
appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%.-10000m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size = 100MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 7
重要配置项解释
-
rootLogger.level
: 设置根日志级别的阈值,可以是TRACE
,DEBUG
,INFO
,WARN
,ERROR
,FATAL
。rootLogger.level = info
-
appender.console
: 配置控制台日志输出。type
: 日志输出类型,这里是Console
表示控制台。name
: 日志输出器的名称。layout.type
: 日志格式类型,这里是PatternLayout
。layout.pattern
: 日志格式模式。
-
appender.rolling
: 配置滚动文件日志输出。type
: 日志输出类型,这里是RollingFile
表示滚动文件。name
: 日志输出器的名称。fileName
: 当前日志文件的路径和名称。filePattern
: 日志文件的滚动模式。layout.type
: 日志格式类型,这里是PatternLayout
。layout.pattern
: 日志格式模式。policies.type
: 触发策略类型。policies.time.type
: 时间触发策略。policies.time.interval
: 滚动间隔,单位为天。policies.time.modulate
: 是否调整滚动时间,使其对齐到整点。policies.size.type
: 大小触发策略。policies.size.size
: 单个日志文件的最大大小。strategy.type
: 滚动策略类型。strategy.max
: 最大保留的日志文件数量。
修改日志配置
-
修改日志级别:如果你希望看到更详细的日志信息,可以将日志级别从
INFO
改为DEBUG
或TRACE
。rootLogger.level = debug
-
调整日志文件大小和数量:根据你的需求,可以调整日志文件的最大大小和保留的日志文件数量。
appender.rolling.policies.size.size = 200MB appender.rolling.strategy.max = 10
-
增加新的日志输出器:如果你希望将日志输出到其他地方(如远程服务器),可以添加新的日志输出器配置。
修改日志配置文件后,需要重启 Elasticsearch 以使配置生效。
二、可视化工具Kibana
1.介绍
Kibana是一个开源的数据分析和可视化平台,它是Elastic Stack(之前称为ELK Stack)的一部分,用于搜索、查看、分析和交互式地操作存储在Elasticsearch索引中的数据。Kibana提供了丰富的图表、表格、地图等可视化组件,用户可以通过Kibana轻松地创建各种数据可视化和仪表盘,以便更好地理解和分析数据。
使用Kibana有以下好处:
-
数据可视化:Kibana提供了丰富的可视化组件,用户可以通过简单的拖拽和配置操作,创建各种图表、表格、地图等数据可视化,帮助用户更直观地理解数据。
-
仪表盘:Kibana允许用户将多个可视化组件组合成仪表盘,从而可以在一个页面上综合展示多个数据可视化,帮助用户全面地监控和分析数据。
-
数据查询:Kibana提供了强大的查询功能,用户可以通过Kibana界面轻松地构建和执行复杂的数据查询,以便快速地找到所需的数据。
-
开放性和扩展性:Kibana是一个开源的项目,用户可以根据自己的需求进行定制和扩展,满足不同的数据分析和可视化需求。
总的来说,Kibana作为Elastic Stack的一部分,为用户提供了强大的数据分析和可视化能力,帮助用户更好地理解和利用存储在Elasticsearch中的数据。
2.安装(Docker)
下面开始使用docker安装kibana:
- 拉取Kibana镜像:在终端中执行以下命令来拉取Kibana的官方镜像:
docker pull kibana:7.12.1
- 运行Kibana容器:执行以下命令来运行Kibana容器:
docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://es:9200 --network=es-net -p 5601:5601 kibana:7.12.1
-e ELASTICSEARCH_HOSTS=http://es:9200
: 设置 Kibana 运行时连接的 Elasticsearch 节点的地址,这里指定了 Elasticsearch 服务的地址为 http://es:9200,其中 “es” 是 Elasticsearch 服务的容器名,而不是具体的 IP 地址。这是因为在 --network=es-net 中指定了容器连接到 “es-net” 网络,容器名会被解析为相应的 IP 地址。
- 访问Kibana:在浏览器中输入
http://localhost:5601
,如果一切正常,你将会看到Kibana的页面,表明Kibana已经成功运行。
参考
https://blog.csdn.net/qq_61635026/article/details/133645483
相关文章:
ElasticSearch深入解析(三):Elasticsearch 7的安装与配置、Kibana安装
文章目录 〇、简介1.Elasticsearch简介2.典型业务场景3.数据采集工具4.名词解释 一、安装1.使用docker(1)创建虚拟网络(2)Elasticsearch安装步骤 2.使用压缩包 二、配置1.目录介绍2.配置文件介绍3.elasticsearch.yml节点配置4.jvm.options堆配置问题:为什么说堆内存…...
初始SpringBoot
此文介绍一些有关我对SpringBoot的学习理解, 声明:此处我的IDEA是企业版的,可能和社区版会有一些差异 1. 第⼀个SpringBoot程序 1. SpringBoot介绍 我们看下Spring官方的介绍 可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速…...
【算法笔记】动态规划基础(一):dp思想、基础线性dp
目录 前言动态规划的精髓什么叫“状态”动态规划的概念动态规划的三要素动态规划的框架无后效性dfs -> 记忆化搜索 -> dp暴力写法记忆化搜索写法记忆化搜索优化了什么?怎么转化成dp?dp写法 dp其实也是图论首先先说结论:状态DAG是怎样的…...
C++入门基础(2)
Hello~,欢迎大家来到我的博客进行学习! 目录 1.缺省参数2.函数重载3.引用3.1 引用的概念和定义3.2 引用的特性3.3引用的使用3.4 const引用3.5 指针和引用的关系扩展 4. nullptr 1.缺省参数 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时&…...
OpenCV-Python (官方)中文教程(部分一)_Day15
18.图像梯度 梯度简单来说就是求导。 OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel, Scharr和Laplacian。Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对 Sobel(使用小的卷积核求解求解梯度角度时)的优化。Laplacian 是…...
大厂面试:MySQL篇
前言 本章内容来自B站黑马程序员java大厂面试题和小林coding 博主学习笔记,如果有不对的地方,海涵。 如果这篇文章对你有帮助,可以点点关注,点点赞,谢谢你! 1.MySQL优化 1.1 定位慢查询 定位 一个SQL…...
软件工程的13条“定律”:从Hyrum定律到康威定律,再到Zawinski定律
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
Linux删除大文件df空间avail空间不增加
背景 根磁盘被同事写满,使用> 删除一些安装包后,df中的avail空间还是0 排除有进程正在占用文件,已使用lsof命令检测过我所删的文件是没有进程在使用 原因 是文件系统预留空间在作祟 解决 # 文件系统预留块 tune2fs -l /dev/vda2 | gr…...
【C语言-选择排序算法】实现对十个数进行排序
目录 前言 一、选择排序算法原理 二、选择排序算法实现对十个数进行排序 三、代码运行示例 四、选择排序算法的时间复杂度和空间复杂度分析 五、选择排序算法的优缺点 六、总结 前言 在计算机科学领域,排序算法是基石般的存在,它们就像是整理杂乱…...
驱动开发硬核特训 · Day 18:深入理解字符设备驱动与子系统的协作机制(以 i.MX8MP 为例)
日期:2025年04月23日 回顾:2025年04月22日(Day 17:Linux 中的子系统概念与注册机制) 本日主题:字符设备驱动 子系统协作机制剖析 学习目标:理解字符设备的注册原理,掌握其与子系统间…...
SQL Server 2022 常见问题解答:从安装到优化的全场景指南
SQL Server 2022 作为微软最新的数据库管理系统,在性能、安全性和云集成方面带来了多项革新。然而,用户在实际使用中仍可能遇到各类问题。本文将围绕安装配置、性能优化、备份恢复、安全设置、高可用性方案、兼容性问题及错误代码解析等核心场景…...
软件开发版本库命名规范说明
背景:近期一直再更新自己所开发的一个前端大文件上传npm库(enlarge-file-upload),为了让库的发版更加规范,于是参考了各种文档写下了这篇关于软件开发库的版本命名规范,且不仅局限于前端的版本命名规范,适用于整个软件…...
Kafka 详解
1.基本概念:Kafka 是分布式发布 - 订阅消息系统,具有高吞吐量、可扩展性等优势,支持点对点和发布订阅两种消息模式,涉及 Broker、Topic、Partition 等多种角色。 2.安装步骤:需先安装 JDK 和 Zookeeper,下…...
【Qwen2.5-VL 踩坑记录】本地 + 海外账号和国内账号的 API 调用区别(阿里云百炼平台)
API 调用 阿里云百炼平台的海内外 API 的区别: 海外版:需要进行 API 基础 URL 设置国内版:无需设置。 本人的服务器在香港,采用海外版的 API 时,需要进行如下API端点配置 / API基础URL设置 / API客户端配置…...
硬核解析:整车行驶阻力系数插值计算与滑行阻力分解方法论
引言:阻力优化的核心价值 在汽车工程领域,行驶阻力是影响动力性、经济性及排放的核心因素。根据统计,车辆行驶中约60%的燃油消耗用于克服阻力(风阻、滚阻、传动内阻等)。尤其在电动化趋势下,阻力降低1%可提…...
【网络原理】TCP提升效率机制(一):滑动窗口
目录 一. 前言 二. 滑动窗口 三. 丢包现象 1)ACK报文丢失 2)数据丢失 四. 总结 一. 前言 TCP最核心的机制就是可靠传输 ,确认应答,超时重传,连接管理这些都保证了可靠传输,得到了可靠传输,…...
移动端使用keep-alive将页面缓存和滚动缓存具体实现方法 - 详解
1. 配置组件名称 确保列表页组件设置了name选项,(组合式API额外配置): <!-- vue2写法 --> export default {name: UserList // 必须与 <keep-alive> 的 include 匹配 }<!-- vue3写法 --> defineOptions({na…...
工作记录9
1.点击按钮发送AJAX请求 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title&…...
Java 异常 SSLException: fatal alert: protocol_version 全解析与解决方案
在 Java 网络通信中,SSLException: fatal alert: protocol_version 是典型的 TLS/SSL 协议版本不兼容异常。本文结合 Java 官方规范、TLS 协议标准及实战经验,提供体系化解决方案,帮助开发者快速定位并解决协议版本冲突问题。 一、异常本质&…...
连锁美业管理系统「数据分析」的重要左右分析︳博弈美业系统疗愈系统分享
美业管理系统中的数据分析功能在提升运营效率、优化客户体验、增强决策科学性等方面具有重要作用。 数据分析功能将美业从“经验驱动”升级为“数据驱动”,帮助商家在客户管理、成本控制、服务创新等环节实现精细化运营,最终提升盈利能力与品牌竞争力…...
Openharmony 和 HarmonyOS 区别?
文章目录 OpenHarmony 与 HarmonyOS 的区别:开源生态与商业发行版的定位差异一、定义与定位二、技术架构对比1. OpenHarmony2. HarmonyOS 三、应用场景差异四、开发主体与生态支持五、关键区别总结六、如何选择?未来展望 OpenHarmony 与 HarmonyOS 的区别…...
26.OpenCV形态学操作
OpenCV形态学操作 形态学操作(Morphological Operations)源自二值图像处理,主要用于分析和处理图像中的结构元素,对图像进行去噪、提取边缘、分割等预处理步骤。OpenCV库中提供了丰富的形态学函数,常见的包括…...
uniapp小程序使用echarts
1、引入插件 在Dcloud插件市场下载echarts插件:插件地址 2、页面使用简单示例: <template><view class"pie-view flex-center"><view style"width: 100%; height: 600rpx"><l-echart ref"chartRef&quo…...
Vue 中 使用 Mixins 解决 多页面共用相同组件的相关问题
1. 需要解决的问题 最近在vue项目中,有多个页面需要用到同一个组件,至于是什么组件,这里不重要,重要的这个组件需要被多个文件引用,而且有组件有一些控制逻辑。 1.1代码展示 <template><div class"ap…...
Rust 学习笔记:Rust 简介
Rust 学习笔记:Rust 简介 Rust 学习笔记:Rust 简介历史与发展历程核心特性优点缺点应用领域 Rust 学习笔记:Rust 简介 Rust 是一种系统级编程语言,由 Mozilla 研究院的 Graydon Hoare 于 2006 年设计,旨在提供内存安全…...
第六节:进阶特性高频题-自定义指令实现场景
示例:v-lazy(图片懒加载)、v-permission(权限控制) 钩子函数:mounted、updated、unmounted等 一、自定义指令核心机制 指令生命周期钩子 const myDirective {// 元素插入父节点时调用(初始化…...
未曾设想的道路1
写在前面: 与其转去读博,倾向自学就业。 中国科学技术大学数学科学学院拥有一支优秀的师资团队,以下是部分教授的简介: 陈发来教授: 荣誉:2024年6月13日,在德国莱布尼茨信息科学中心召开的国际…...
Axure按钮设计分享:打造高效交互体验的六大按钮类型
在产品设计过程中,按钮作为用户与界面交互的核心元素,其设计质量直接影响用户体验与操作效率。Axure作为一款强大的原型设计工具,为设计师提供了丰富的按钮设计选项。本文将围绕基础按钮、禁用按钮、圆角按钮、动态按钮、渐变按钮和图标按钮六…...
MySQL 8.4企业版 安装和配置审计插件
在最新的MySQL 8.4.4企业版上启用审计日志功能 操作系统:Ubuntu 24.04 数据库:8.4.4-commercial for Linux on x86_64 (MySQL Enterprise Server - Commercial) 1.查看安装脚本 下面2个脚本位于mysql安装目录 share 下,一个是window一个是linux可以用…...
AI大模型学习十一:尝鲜ubuntu 25.04 桌面版私有化sealos cloud + devbox+minio,实战运行成功
一、说明 用了ubuntu 25.04,内核为GNU/Linux 6.14.0-15-generic x86_64,升级了部分image,过程曲折啊 sealos 能干啥 对集群生命周期进行管理,一键安装高可用 Kubernetes 集群,增删节点清理集群自恢复等 通过 sealos…...
idea无法下载源代码
通过idea找到用户设置文件路径 查看 setting.xml 文件,找到了以下相关的配置,注释掉这个maven-default-http-blocker的镜像,这个东西阻碍了去阿里的镜像库查找依赖,注释掉。 然后重启idea就能下载了...
【敏矽微ME32G030系列】介绍、环境搭建、工程测试
【敏矽微ME32G030系列】介绍、环境搭建、工程测试 本文介绍了敏矽微ME32G030系列单片机及开发板、包括参数特点、原理图、应用场景,以及开发环境搭建、工程测试等流程。 简介 本节介绍了开发板主控、特点、开发板原理图、板载资源等信息。 主控 开发板采用 ME3…...
Hooks的使用限制及原因
Hooks的使用限制及原因 Hooks的核心限制 只能在函数组件顶层调用 ⭐不能在条件语句、循环、嵌套函数中调用 ⭐只能在React函数组件或自定义Hooks中调用 ⭐ 为什么有这些限制? 根本原因:React依赖Hooks的调用顺序 React内部使用数组来存储每个组件的…...
【JavaScript】二十六、正则表达式
文章目录 1、正则表达式1.1 定义1.2 校验 2、元字符2.1 边界符2.2 量词2.3 字符类2.3.1 方括号[ ]2.3.2 小点.2.3.3 预定义 2.4 案例:用户名验证 3、修饰符3.1 语法3.2 案例:过滤敏感词 1、正则表达式 Regular Expression,正则表达式&#x…...
Geek强大的电脑卸载软件工具,免费下载
一款强大的卸载电脑软件工具,无需安装 免费下载...
tomcat Server 连接服务器 进展
由于机房的环境变更,所接触的问题也不一样!!!! 但后来出现以下提示: 已连接到服务器 配置错误: 部署源 springmvc:war 无效[2025-04-23 11:19:50,192] 工件 springmvc:war: 部署工件时出错。请参阅服务器日…...
Elasticsearch 集群节点下线方案
Elasticsearch 集群节点下线方案 在 Elasticsearch(ES)集群中,节点(Node)下线可能会影响数据的可用性和集群的健康状态。因此,正确的下线步骤需要确保数据不会丢失,并且不会影响查询或写入。 &…...
【模板匹配】图像处理(OpenCV)-part10
19.1模板匹配 模板匹配就是用模板图(通常是一个小图)在目标图像(通常是一个比模板图大的图片)中不断的滑动比较,通过某种比较方法来判断是否匹配成功,找到模板图所在的位置。 不会有边缘填充。 类似于卷积,…...
VMware中CentOS 7虚拟机设置固定IP(NAT模式)完整教程
前言 在VMware中为CentOS 7虚拟机配置固定IP是搭建稳定服务环境的关键步骤。本文基于用户提供的最新配置文件,详细演示如何从DHCP自动获取IP调整为固定IP(192.168.89.129),并提供修改前后的配置对比及操作验证。 一、当前配置状态…...
Ragflow、Dify、FastGPT、COZE核心差异对比与Ragflow的深度文档理解能力和全流程优化设计
一、Ragflow、Dify、FastGPT、COZE核心差异对比 以下从核心功能、目标用户、技术特性等维度对比四款工具的核心差异: 核心功能定位 • Ragflow:专注于深度文档理解的RAG引擎,擅长处理复杂格式(PDF、扫描件、表格等)的…...
飞帆控件:在编辑模式下额外加载的库
飞帆是一个自由的控件设计平台。在飞帆中,我们可以很方便地创建基于 Vue 2 组件的控件,并使用控件来搭建网页。 他山之石,可以攻玉。在创建控件中,使用 js 、css 依赖库能让我们的控件更强大。 有些时候,在编辑模式下…...
Agentic AI——当AI学会主动思考与决策,世界将如何被重塑?
一、引言:2025,Agentic AI的元年 “如果ChatGPT是AI的‘聊天时代’,那么2025年将开启AI的‘行动时代’。”——Global X Insights[1] 随着Agentic AI(自主决策型人工智能)的崛起,AI系统正从被动应答的“工具…...
68元撬动未来:明远智睿2351开发板重塑嵌入式开发生态
在嵌入式开发领域,价格与性能的矛盾始终存在:高端开发板功能强大但成本高昂,低价产品则往往受限于性能与扩展性。明远智睿2351开发板以68元(含税)的定价打破这一僵局,通过四核1.4G处理器、全功能Linux系统与…...
C# 全局 Mutex 是否需使用 `Global\` 前缀
回顾一下Mutex在Windows中的作用。Mutex是用于同步多个进程或线程的机制,确保同一时间只有一个实例访问资源。当创建Mutex时,如果命名时没有指定Global\前缀,默认可能是在会话内创建的,也就是只在当前用户会话中可见。这样的话&am…...
C# 中的 `lock` 关键字本质
C# 中的 lock 关键字本质上是基于 Monitor 类实现的线程同步机制,其核心是通过 互斥锁(Mutex) 确保代码块的原子性执行。以下是其实现本质的分步解析: 1. 语法糖的转换 当使用 lock 关键字时: lock (obj) {// 临界区…...
Java 集合:泛型、Set 集合及其实现类详解
参考资料:java入门到飞起 Java;泛型;Set 集合;TreeSet;HashSet;数据结构 一、引言 在 Java 编程中,集合框架是一个重要的组成部分,它提供了丰富的数据结构和算法来存储和操作数据。泛型与 Set…...
前端基础之《Vue(8)—内置组件》
一、Vue2.0中的内置组件 1、<slot> 插槽 2、<keep-alive> 动态组件 被keep-alive所包裹的组件: (1)不会被销毁。 (2)还会多两个生命周期钩子:activated()、deactivated()。 (3&a…...
Zookeeper是什么?基于zookeeper实现分布式锁
zookeeper听的很多,但实际在应用开发中用的不错,主要是作为中间件配合使用的,例如:Kafka。 了解zk首先需要知道它的数据结构,可以想象为树、文件夹目录。每个节点有基本的信息,例如:创建时间、…...
计算机网络 第二章:应用层(四)
2.6 视频流和内容分发网 对如何在因特网中实现流行的视频流服务进行概述。它们的实现方式是使用应用层协议和以像高速缓存那样方式运行的服务器。 2.6.1 因特网视频 在流式存储视频应用中,基础的媒体是预先录制的视频,例如电影、电视节目、录制好的体育…...
什么是数据库的DDL和DML,有什么区别?
数据库中的 DDL 和 DML 是两类不同的 SQL 语言,用于不同的数据库操作目的。以下是它们的定义、区别和具体说明: 1. DDL(Data Definition Language,数据定义语言) 作用:定义或修改数据库的结构(…...