前言:

 Elasticsearch 数据库介绍

1. 概述

Elasticsearch(简称 ES)是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建。它能够快速存储、搜索和分析大量数据,广泛应用于全文搜索、日志分析、实时数据处理等场景。

2. 核心特性

分布式架构:ES 采用分布式设计,支持水平扩展,能够处理 PB 级数据。

实时搜索:数据几乎可以实时被索引和搜索,延迟极低。

全文搜索:支持复杂的全文搜索功能,包括模糊搜索、短语匹配等。

多租户支持:通过索引机制支持多租户,不同用户或应用可以独立管理数据。

RESTful API:提供 RESTful API,易于集成和使用。

强大的查询语言:支持丰富的查询 DSL(Domain Specific Language),可以进行复杂的查询和聚合操作。

3. 主要应用场景

全文搜索:用于构建搜索引擎,支持复杂的查询和高亮显示。

日志和指标分析:常用于日志管理和监控系统,如 ELK Stack(Elasticsearch, Logstash, Kibana)。

实时数据分析:支持实时数据分析和可视化。

商业智能:用于数据挖掘和商业智能分析。

4. 基本概念

索引(Index):类似于数据库中的表,用于存储相关文档。

文档(Document):索引中的基本数据单元,以 JSON 格式存储。

分片(Shard):索引可以被分成多个分片,分布在不同的节点上,实现分布式存储和查询。

副本(Replica):每个分片可以有多个副本,提高数据的可用性和查询性能。

节点(Node):ES 集群中的一个实例,负责存储数据和执行操作。

集群(Cluster):由多个节点组成的集合,共同存储和操作数据。

5. 生态系统

Logstash:用于数据收集、转换和传输。

Kibana:用于数据可视化和分析。

Beats:轻量级数据采集器,用于收集各种类型的数据。

6.优点:

  - 高性能:能够快速处理大规模数据。

  - 易扩展:支持水平扩展,易于增加节点。

  - 功能丰富:支持复杂的查询和聚合操作。

7.安装步骤

在基于centos平台的docker环境中安装es数据库:

#第一步创建目录:
cd /opt
ls
mkdir es-standonly-docker
cd es-standonly-docker/
#第二步:在/opt/es-standonly-docker/下创建文件
vim docker-compose.yml
#文件内容如下:

services:
  elasticsearch:
    image: elasticsearch:6.5.4
    restart: always
    container_name: elasticsearch
    ports:
      - 9200:9200
    environment:
      - JAVA_OPTS=--Xms256m -Xmx1024m
  kibana:
    image: kibana:6.5.4
    restart: always
    container_name: kibana
    ports:
      - 5601:5601
    environment:
      - elasticsearch_url=http://修改为虚拟机IP:9200
 depends_on:
      - elasticsearch
      
      #注意主机IP应与物理机为同一网段
      #保存退出后,执行下面指令:
      docker compose up -d
      #拉取成功后
      systemctl stop firewalld
      systemctl disable firewalld

如果我们的es报: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 

需要在:/etc/sysctl.conf  添加上:vm.max_map_count=262144

最后启动配置:sysctl -w vm.max_map_count=262144

然后:

docker compose down

重新执行

docker compose up -d

若再次执行 docker compose up -d 出现如下错误

解决方法如下:

1.重启 Docker 服务
强制 Docker 重新初始化 iptables 规则链:
sudo systemctl restart docker
2.	加载 iptable_nat 内核模块
确保系统加载了 NAT 所需的模块:
sudo modprobe iptable_nat
3.	切换到 iptables 传统模式(适用于 RHEL/CentOS 8+)
新版本系统默认使用 nftables,可能与 Docker 不兼容:
切换为 iptables-legacy

sudo update-alternatives --config iptables


选择 iptables-legacy(通常选项1),然后重启 Docker:
sudo systemctl restart docker
4.	清空 iptables 规则(谨慎操作)
清除残留规则让 Docker 重建链(会重置所有网络规则):

sudo iptables -t nat -F      # 清空 NAT 表
sudo iptables -t mangle -F   # 清空 MANGLE 表
sudo iptables -F             # 清空默认表
sudo iptables -X             # 删除自定义链
sudo systemctl restart docker
5.	关闭防火墙冲突
临时禁用 firewalld 或 ufw 测试:

sudo systemctl stop firewalld    # 关闭 firewalld
sudo ufw disable                
sudo systemctl restart docker
6.	手动创建 DOCKER 链
如果 Docker 仍无法创建链,手动添加:

sudo iptables -t nat -N DOCKER
sudo systemctl restart docker
7.	重启系统
若上述步骤无效,重启系统以重置网络堆栈:
sudo reboot

进入浏览器输入:虚拟机IP:5601

进入该网页如图

使用 DEV Tools进行分词功能报404错误,解决方法如下:

#查看容器进程,注意容器ID
docker ps
#进入elasticsearch:6.5.4
docker exec -it f1 /bin/bash #注f1是我的elasticsearch的容器ID前两位,容器iD可以缺省(前提是:目前运行的容器,没有相同的,不会发生争议)


#进入容器后
ls
cd bin
#执行下面指令
./elasticsearch-plugin install http://43.136.108.62:8080/elasticsearch-analysis-ik-6.5.4.zip
#如果报错为Caused by: java.net.ConnectException: Connection refused (Connection refused)
#改为下面的方式安装:
wget -O /usr/share/elasticsearch/bin/elasticsearch-analysis-ik-6.5.4.zip http://43.136.108.62:8080/elasticsearch-analysis-ik-6.5.4.zip
#加上下面这条
cd /usr/share/elasticsearch/bin
./elasticsearch-plugin install file:///usr/share/elasticsearch/bin/elasticsearch-analysis-ik-6.5.4.zip


#安装完毕重启,该报错是由于分词管理的插件未安装引起,安装该插件即可解决
#重启
docker restart 93 f1
docker compose up -d
#浏览器刷新,在下面位置粘贴以下代码运行如下即可
POST _analyze
{
  "analyzer": "ik_max_word",
  "text":"所有或者一无所有"
}

安装完毕!!!!

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐