Elasticsearch8容器化部署

介绍

Elasticsearch 是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建。它被设计用于处理海量数据,并提供近实时的搜索和分析能力。

特性类别 核心要点 说明与应用价值
核心架构 分布式 & 高可用 数据自动分片并在集群中多节点存储,易于水平扩展,并能容忍节点故障。
近实时 (NRT) 搜索 数据写入后通常在 1 秒内即可被检索,非常适合监控和日志分析等场景。
RESTful API 通过简单的 HTTP 请求和 JSON 数据格式进行操作,极大降低了使用门槛。
核心技术 倒排索引 通过建立“词汇 -> 文档”的映射,实现了全文检索的高速查询。
强大的查询 DSL 支持全文搜索、模糊查询、范围过滤、地理位置查询等复杂查询需求。
聚合分析 提供强大的数据分组统计和计算能力,用于深度数据分析。
主要应用场景 应用程序/网站搜索 为电商平台、内容网站等提供高效、精准的搜索功能。
日志与指标分析 (ELK Stack) 与 Logstash、Kibana 等组成 ELK 技术栈,是日志集中管理和分析的经典方案。
业务智能与安全分析 通过对业务数据或安全事件数据进行聚合分析,发现趋势和异常。

核心概念速览

理解以下几个关键术语,能帮助你更好地掌握 Elasticsearch:

  • 索引:类似于关系型数据库中的“数据库”,是存储相关文档的集合。
  • 文档:是信息的基本数据单元,以 JSON 格式表示,类似于数据库中的“一行记录”。
  • 节点与集群:一个节点是一个 Elasticsearch 实例,多个节点组成一个集群,共同提供服务。
  • 分片与副本:索引可以被分成多个分片,分布到不同节点上。每个分片都可以有副本,同时提供数据冗余和高可用性。

优势与挑战

  • 主要优势高性能(尤其擅长全文检索和复杂分析)、高可扩展性(可处理 PB 级别数据)、灵活性(支持各种数据类型)。
  • 需要注意的方面资源消耗相对较高(内存和磁盘 I/O)。学习曲线有一定坡度,尤其在分布式集群管理和性能调优方面。它不提供完整的事务支持(ACID),因此不适合像金融交易这类需要强一致性的场景。

生态与演进

Elasticsearch 通常与 Logstash(数据采集处理)和 Kibana(数据可视化)等组件共同构成 Elastic Stack(旧称 ELK Stack),提供一个完整的数据处理解决方案。另外,需要注意的是,在新版本中(7.x 以后),索引内的“类型”概念已被废弃,现在更推荐使用独立的索引来组织不同结构的数据。

快速开始

目录结构如下,详见

在这里插入图片描述

# .env.example
ELASTIC_PASSWORD=dAUl36wBVN
KIBANA_PASSWORD=CfHhxf8fzv
# docker-compose.yml
services:
  elasticsearch:
    container_name: elasticsearch
    image: elasticsearch:8.12.2
    #image: docker.cnb.cool/jinriyaojia_huigu/yaocai/devops/elasticsearch:8.12.2
    restart: unless-stopped
    user: 1000:1000
    environment:
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
      - "xpack.security.enabled=true"  # 保持安全启用
      - "xpack.security.http.ssl.enabled=false"  # HTTP 禁用 SSL
      - "xpack.security.transport.ssl.enabled=false"  # 启用传输层 SSL
      - "discovery.type=single-node"
      - "ELASTIC_PASSWORD=${ELASTIC_PASSWORD}"
    ports:
      - "19200:9200"  # Elasticsearch 默认的 HTTP 端口,用于接收 REST API 请求,比如搜索、索引文档等操作
      # - "19300:9300"  # Elasticsearch 默认的 Transport 端口,用于节点间通信和 Java 客户端的传输层连接
    volumes:
       - ./runtime/es/config:/usr/share/elasticsearch/config
       - ./runtime/es/data:/usr/share/elasticsearch/data
       - ./runtime/es/plugins:/usr/share/elasticsearch/plugins
       - ./runtime/es/logs:/usr/share/elasticsearch/logs  # 挂载日志目录
    networks:
      - elastic_net
    ulimits:
      nofile:
        soft: 65535
        hard: 65535
      nproc:
        soft: 4096
        hard: 4096
      memlock:
        soft: -1
        hard: -1
    deploy:
      resources:
        limits:
          memory: 2G
          cpus: '2.0'
        reservations:
          memory: 1G
          cpus: '1.0'
    logging:
      driver: json-file
      options:
        max-size: "30m"
        max-file: "10"
  kibana:
    container_name: kibana
    image: kibana:8.12.2
    #image: docker.cnb.cool/jinriyaojia_huigu/yaocai/devops/kibana:8.12.2
    restart: unless-stopped
    environment:
      # - "TZ=Asia/Shanghai"
      - "TZ=UTC"
      - "I18N_LOCALE=zh-CN"
      - "ELASTICSEARCH_SSL_VERIFICATIONMODE=none"  # 开发环境禁用证书验证
      # 禁用不需要的功能
      - "XPACK_SECURITY_LOGIN_HELP_ENABLED=false"
      - "XPACK_SECURITY_PASSWORD_RESET_ENABLED=false"
      - "XPACK_SECURITY_SESSION_IDLE_TIMEOUT=1h"
      - "SERVER_HOST=0.0.0.0"
      - "SERVER_NAME=kibana"
      - "NODE_OPTIONS=--max-old-space-size=800"  # 设置 Node.j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值