找回密码
 立即注册
首页 业界区 业界 ElasticSearch介绍及单机版安装

ElasticSearch介绍及单机版安装

科元料 4 天前
概述

ElasticSearch官网:https://www.elastic.co/cn/elasticsearch
GitHub地址:https://github.com/elastic/elasticsearch
Elasticsearch 是使用Java语言且基于 Lucene 库的开源 分布式搜索和分析引擎、可扩展数据存储和矢量数据库,针对生产级工作负载的速度和相关性进行了优化。Elasticsearch 是 Elastic 开放 Stack 平台的基础。它支持近乎实时地搜索海量数据集、执行矢量搜索、与生成式 AI 应用程序集成等等。
核心特点

分布式架构


  • 支持自动分片(Sharding)和副本(Replication),可横向扩展至数百台服务器,处理 PB 级数据。
  • 节点自动发现和负载均衡,保证高可用性和容错性。
实时搜索与分析


  • 数据写入后可被实时搜索,支持复杂查询(如全文搜索、结构化搜索、地理位置搜索等)。
  • 提供聚合(Aggregation)功能,可快速进行数据统计和分析(如求和、平均值、分桶统计等)。
灵活的数据模型


  • 基于 JSON 格式 存储数据,支持动态映射(Dynamic Mapping),无需预先定义严格的模式(Schema)。
丰富的功能生态


  • 与 Elastic Stack(ELK Stack)深度集成,包括 Logstash(数据收集)、Kibana(可视化)、Beats(轻量级数据采集器)等工具。
  • 提供 RESTful API,方便与各类应用程序集成。
高扩展性


  • 支持插件机制,可通过插件扩展功能(如分词器、安全认证、监控等)。
应用场景


  • 全文搜索引擎
例如电商网站的商品搜索、新闻网站的内容检索等,支持模糊查询、关键词高亮等功能。


  • 日志分析与监控
收集和分析海量日志数据(如服务器日志、应用日志),通过 Kibana 实现可视化监控和故障排查。


  • 实时数据统计
用于实时分析用户行为数据、业务指标(如网站流量、订单统计),支持动态仪表盘展示。


  • 地理位置搜索
支持基于地理位置的查询(如 “查找附近 5 公里内的餐馆”),适用于地图服务、O2O 应用等。


  • 数据分析与 BI
结合聚合功能,对数据进行多维分析,辅助业务决策。
二进制安装单机ElasticSearch7.x版本

环境信息

系统规格描述Ubuntu8c16g安装ES下载二进制资源

下载地址:https://www.elastic.co/downloads/elasticsearch
  1. # 下载
  2. [root@master /data00/software]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.12-linux-x86_64.tar.gz
  3. # 解压
  4. [root@master /data00/software]# tar -xvf elasticsearch-7.17.12-linux-x86_64.tar.gz
  5. # 创建软连接
  6. [root@master /data00/software]# [root@master /data00/software]# ln -s /data00/software/elasticsearch-7.17.12 /usr/local/elasticsearch
  7. [root@master /data00/software]# ll /usr/local/elasticsearch
  8. lrwxrwxrwx 1 root root 38 Jun  4 14:36 /usr/local/elasticsearch -> /data00/software/elasticsearch-7.17.12
复制代码
优化系统参数
  1. [root@master ~]# vim /etc/sysctl.conf
  2. # ES 需要大量文件描述符来处理索引和网络连接,建议设置为较高值:
  3. fs.file-max = 655360
  4. # ES 使用 mmap 技术加载索引,需增大虚拟内存区域限制:
  5. vm.max_map_count = 2147483642
  6. # 禁用交换空间(swap分区)
  7. vm.swappiness = 1
  8. # 网络参数优化
  9. net.ipv4.tcp_keepalive_time = 600
  10. net.ipv4.tcp_keepalive_intvl = 60
  11. net.ipv4.tcp_keepalive_probes = 10
  12. net.ipv4.tcp_max_syn_backlog = 4096
  13. net.core.somaxconn = 4096
  14. net.core.netdev_max_backlog = 16384
  15. net.core.rmem_max = 262144
  16. net.core.wmem_max = 262144
  17. # 使参数生效
  18. [root@master ~]# sysctl -p /etc/sysctl.conf
  19. # 查询参数,验证是否生效
  20. [root@master ~]# sysctl -q vm.max_map_count
  21. vm.max_map_count = 2147483642
复制代码
修改ES的配置文件
  1. [root@master ~]# vim /usr/local/elasticsearch/config/elasticsearch.yml
  2. cluster.name: es01
  3. path.data: /data00/data/elasticsearch/
  4. path.logs: /var/log/elasticsearch/
  5. http.port: 9200
  6. discovery.seed_hosts: ["10.37.97.56"]
复制代码
创建数据目录及日志目录
  1. [root@master ~]# mkdir -p /data00/data/elasticsearch/
  2. [root@master ~]# mkdir -p /var/log/elasticsearch/
复制代码
创建ES用户
  1. [root@master ~]# useradd elasticsearch
  2. [root@master ~]# id elasticsearch
  3. uid=2002(elasticsearch) gid=2003(elasticsearch) groups=2003(elasticsearch)
  4. # 授权
  5. [root@master ~]# chown elasticsearch:elasticsearch -R /data00/data/elasticsearch/
  6. [root@master ~]# chown elasticsearch:elasticsearch -R /var/log/elasticsearch/
  7. # 安装目录
  8. [root@master ~]# chown elasticsearch:elasticsearch -R /data00/software/elasticsearch-7.17.12
复制代码
添加对ES用户对限制
  1. [root@master ~]# vim /etc/security/limits.conf
  2. # 最大文件描述符数
  3. elasticsearch hard nofile 655360
  4. elasticsearch soft nofile 655360
  5. # 最大进程数
  6. elasticsearch hard nproc 8192
  7. elasticsearch soft nproc 8192
  8. # 锁定内存限制
  9. elasticsearch hard memlock unlimited
  10. elasticsearch soft memlock unlimited
复制代码
创建systemd文件
  1. [root@master ~]# vim /lib/systemd/system/es.service
  2. [Unit]
  3. Description=elasticsearch service
  4. Documentation=https://www.cnblogs.com/huangSir-devops
  5. After=network.target auditd.service
  6. [Service]
  7. LimitMEMLOCK=infinity
  8. User=elasticsearch
  9. ExecStart=/usr/local/elasticsearch/bin/elasticsearch
  10. TimeoutStopSec=0
  11. TimeoutStartSec=0
  12. [Install]
  13. WantedBy=multi-user.target
复制代码
启动ES
  1. [root@master ~]# systemctl daemon-reload
  2. [root@master ~]# systemctl start es
  3. [root@master ~]# systemctl status es
  4. ● es.service - elasticsearch service
  5.      Loaded: loaded (/lib/systemd/system/es.service; disabled; preset: enabled)
  6.      Active: active (running) since Wed 2025-06-04 15:07:10 CST; 3s ago
  7.        Docs: https://www.cnblogs.com/huangSir-devops
  8.    Main PID: 2540104 (elasticsearch)
  9.       Tasks: 21 (limit: 76938)
  10.      Memory: 40.4M
  11.      CGroup: /system.slice/es.service
  12.              ├─2540104 /bin/bash /usr/local/elasticsearch/bin/elasticsearch
  13.              ├─2540170 /bin/bash bin/elasticsearch-keystore has-passwd --silent
  14.              └─2540172 /usr/local/elasticsearch/jdk/bin/java -Xshare:auto -Xms4m -Xmx64m -XX:+UseSerialGC -Des.path.home=/usr/local/elasticsearch -Des.path.conf=/usr/local/elasticsearch/config -Des.distributio>
  15. Jun 04 15:07:10 master systemd[1]: Started es.service - elasticsearch service.
  16. # 检查端口
  17. [root@master ~]# ss -lntup | grep 9200
  18. tcp   LISTEN 0      65535              [::ffff:127.0.0.1]:9200             *:*    users:(("java",pid=2540104,fd=355))                     
  19. tcp   LISTEN 0      65535                           [::1]:9200          [::]:*    users:(("java",pid=2540104,fd=354))
  20. # 访问es
  21. [root@master ~]# curl localhost:9200
  22. {
  23.   "name" : "master",
  24.   "cluster_name" : "es01",
  25.   "cluster_uuid" : "_na_",
  26.   "version" : {
  27.     "number" : "7.17.12",
  28.     "build_flavor" : "default",
  29.     "build_type" : "tar",
  30.     "build_hash" : "e3b0c3d3c5c130e1dc6d567d6baef1c73eeb2059",
  31.     "build_date" : "2023-07-20T05:33:33.690180787Z",
  32.     "build_snapshot" : false,
  33.     "lucene_version" : "8.11.1",
  34.     "minimum_wire_compatibility_version" : "6.8.0",
  35.     "minimum_index_compatibility_version" : "6.0.0-beta1"
  36.   },
  37.   "tagline" : "You Know, for Search"
  38. }
复制代码
Docker安装ElasticSearch
  1. # 在主机创建目录(需提前手动创建)
  2. mkdir -p /data/es/data
  3. mkdir -p /data/es/config
  4. mkdir -p /data/es/plugins
  5. docker run -d \
  6.   --name es7.17.12 \
  7.   -p 9200:9200 -p 9300:9300 \
  8.   -e "discovery.type=single-node" \
  9.   -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \
  10.   # 挂载配置卷
  11.   -v /data/es/data:/usr/share/elasticsearch/config \
  12.   # 挂载数据卷
  13.   -v /data/es/config:/usr/share/elasticsearch/data \
  14.   # 挂载插件卷
  15.   -v /data/es/plugins:/usr/share/elasticsearch/plugins \
  16.   -u root \  # 允许以 root 权限修改配置(可选,需根据实际权限需求调整)
  17.   elasticsearch:7.17.12
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册