0

0

elasticsearch安装与配置

爱谁谁

爱谁谁

发布时间:2025-05-11 09:56:16

|

936人浏览过

|

来源于php中文网

原创

念叨了两天,第一篇安装教程总算来啦!。好了,废话不多说,关于elasticsearch是什么这里我就不做过多介绍了,咱们直接上干货。

安装前台运行

elasticsearch的安装要说是非常简单的,可以说没有什么安转操作,直接下载相关文件,运行启动命令即可,首先进入到下载页面,选择适合自己的版本下载,如下:

elasticsearch安装与配置

有针对Windows的压缩包zip,也有msi这种安装引导程序,有针对mac和linux的deb以及rpm,读者根据自己的操作系统选择合适的压缩包下载即可。

在下载页还有安装步骤介绍,如下:

elasticsearch安装与配置

由这段介绍可以看出,下载解压后直接运行bin/elasticsearch (Windows下运行bin\elasticsearch.bat)即可。运行成功后,在浏览器中访问http://localhost:9200,查看是否启动成功,启动成功结果如下:

elasticsearch安装与配置

可以看到,启动后,默认的节点名称为Huf6FQ-,默认的集群名称为elasticsearch,当然,也可以在启动命令中自定义节点名称和集群名称,如下:

代码语言:javascript代码运行次数:0运行复制
./bin/elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_1

执行结果如下:

elasticsearch安装与配置

小贴士:

后台运行

刚刚的启动方式是前台运行,用户按下Ctrl+C,运行就停止了,这种运行方式适合测试和开发环境,生产环境,直接在后台运行即可,启动命令如下:

代码语言:javascript代码运行次数:0运行复制
./elasticsearch -d

如此,使elasticsearch在后台运行,在后台运行的elasticsearch可以使用jdk自带的查看当前Java进程的工具jps命令查看运行状况,如下:

elasticsearch安装与配置

当然也可以直接使用Linux中的命令查看,如下:

代码语言:javascript代码运行次数:0运行复制
ps aux|grep elasticsearch

不管哪一种查看方式,查看后都可以获取到elasticsearch的进程id,然后通过kill命令可以关闭elasticsearch,如下:

代码语言:javascript代码运行次数:0运行复制
kill 8423

操作结果如下:

elasticsearch安装与配置
配置安装目录介绍

elasticsearch下载之后,解压后,可以看到目录结构如下:

elasticsearch安装与配置

目录含义如下:

文件/文件夹

作用

bin

可执行文件存放目录,例如启动文件

config

配置文件存放目录

data

数据存储目录

lib

第三方依赖库

logs

运行日志输出目录

modules

MTTSHOP包包免费商城系统
MTTSHOP包包免费商城系统

一款非常包包、衣服、鞋子类网站,页面干净清洁、一目了然,mttshop打造精致、简单、易用、免费的商城。 系统要求:IIS5.1以后,必须安装.net 3.5 安装步骤: 1、下载完成后,直接解压文件mttshop.rar 2、附加数据库:解压后的可以找一个叫db的文件夹,解压后直接附加就可以,支持SQL 2000、2005、2008 3、配置web.config文件,找到key=&qu

下载

依赖模块目录

plugins

插件目录

LICENSE.txt

LICENSE声明文件

NOTICE.txt

版权声明文件

README.textile

框架介绍信息

配置介绍

在config目录下,主要有如下配置文件:

elasticsearch.keystorejvm.optionsrole_mapping.ymluserselasticsearch.ymllog4j2.propertiesroles.ymlusers_roles

其中,我们经常涉及到的有三个,elasticsearch.yml、log4j2.properties以及jvm.options,其中,elasticsearch.yml是elasticsearch的基本配置文件,log4j2是日志输出配置文件,jvm则是jvm基本参数配置。这里主要来看看elasticsearch.yml配置文件,如下:

代码语言:javascript代码运行次数:0运行复制
# 集群配置#配置集群名字,集群名字默认为elasticsearch,#elasticsearch会自动发现在同一网段下的elasticsearch节点。#读者在第一次启动elasticsearch时,在浏览器中输入http://localhost:9200,#在返回的数据中,就有集群名字,默认即为elasticsearch。#cluster.name: my-application# 节点配置#配置节点名称#node.name: node-1#给节点添加自定义属性#node.attr.rack: r1# 路径配置#数据存放目录,默认是elasticsearch下的data目录,可以指定多个目录,用,隔开,如:#path.data:/path/data1,/path/data2#path.data: /path/to/data#日志存放目录,默认为elasticsearch下的logs目录#path.logs: /path/to/logs# 内存配置#配置是否锁住内存。当jvm开始swapping时,elasticsearch的效率降低,为了避免这种情况,可以设置为true。#bootstrap.memory_lock: true# 网络配置#设置绑定的ip地址#network.host: 192.168.0.1#配置对外提供服务的http端口号#http.port: 9200# 集群节点发现参数#设置集群中master节点的初始列表,通过这个配置可以发现新加入的集群的节点。  #discovery.zen.ping.unicast.hosts: ["host1", "host2"]#保证集群中的节点可以知道其他n个有master资格的节点,防止出现split brain,默认为1#discovery.zen.minimum_master_nodes: # Gateway#当n个节点启动后,再开始集群的恢复#gateway.recover_after_nodes: 3

当然这里只是最基本的配置,更多配置读者可以参考官方文档。

核心概念

Elasticsearch安装成功后,在正式启动之前,还需要读者了解Elasticsearch中几个核心概念,掌握这些核心概念,有助于读者更好的理解Elasticsearch。

NRT

Elasticsearch是一个接近实时(near real time)的搜索平台,也就是说,从你建立索引,到这个索引可以被搜索只需要很小的延迟,通常是1秒。

cluster

一个集群就是由一个或多个节点组织在一起, 这些节点共同持有全部的索引数据, 并共同提供索引和搜索功能。 一个集群由一个唯一的名字标识(默认就是“elasticsearch”,在上文启动过程中,也像读者展示了如何自定义集群名称)。 这个名字很重要, 因为一个节点只能通过指定某个集群的名字,来加入这个集群。在生产环境中显式地设定这个名字是一个好习惯,但是使用默认值来进行测试/开发也是不错的。开发者需要确认不要使用相同的集群名字,以避免节点加入到错误的集群。需要注意的是,一个集群中只包含一个节点是合法的。另外,你也可以拥有多个集群,集群以名字区分。

node

一个节点就是集群中的一个服务,作为集群的一部分,它可以用来存储数据,参与集群的索引和搜索功能。和集群类似,一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随机的Universally Unique IDentifier (UUID),这个名字会在节点启动时分配给节点。这个名字对于节点管理工作来说很重要,因为开发者需要确定网络中的哪些服务对应于Elasticsearch集群中的哪些节点。一个节点可以通过配置集群名称的方式来加入一个指定的集群。 默认情况下,每个节点都会被加入到一个叫做“elasticsearch”的集群中,这意味着,如果开发者启动了多个节点, 并且这些节点能够相互发现彼此,那么这些节点会自动加入到一个叫做“elasticsearch”的集群中。在一个集群里可以拥有任意多个节点。而且,如果当前网络中没有运行任何节点,这时启动一个节点,会默认创建并加入一个叫做“elasticsearch”的单节点集群。

index

一个索引就是一个拥有相似特征的文档的集合。例如,客户数据可以建立一个索引,产品目录可以建立一个索引,订单数据可以建立一个索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以创建任意多个索引。

type

在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组相同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台 并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。注意:这是一个即将过期的概念,在Elasticsearch 6.0.0或更高版本中创建的索引只包含单个映射类型(type)。在具有多种映射类型的5.x中创建的索引将继续像以前一样在Elasticsearch 6.x中运行。映射类型将在Elasticsearch7.0.0中完全删除。许多人喜欢将index比喻为关系型数据库中的database,将type比喻为关系型数据库中的table,实际上这个比喻非常不贴切。因为在关系型数据库中,表中的字段都是独立的,但是在Elasticsearch中,在不同的type中,如果filed具有相同的名字,则这些不同的filed实际上是由相同的Lucene Filed提供支持的,因此这种比喻并不恰当;另一方面,在同一索引中存储具有很少或没有共同字段的不同实体会干扰Lucene有效压缩文档的能力。

document

一个文档是一个可被索引的基础信息单元。例如,某一个客户的文档、某一个产品的一个文档、某个订单的一个文档。文档以JSON格式来表示。在一个index/type里面,可以存储任意多的文档。

shards and replicas

一个索引可以存储超出单个节点硬件限制的大量数据。例如,一个具有10亿文档的索引占据1TB的磁盘空间,而任一节点可能没有这样大的磁盘空间来存储或者单个节点处理搜索请求,响应会太慢。为了解决这个问题,Elasticsearch提供了将索引划分成多片的能力,这些片叫做分片。当用户创建一个索引的时候,可以指定分片的数量(默为5,但是在7.0版本中默认会变为1)。每个分片本身也是一个功能完善并且独立的“索引”,这个“索引” 可以被放置到集群中的任何节点上。

分片之所以重要,主要有两方面的原因:

允许水平分割/扩展内容容量允许在分片(位于多个节点上)之上进行分布式的、并行的操作,进而提高性能/吞吐量

至于一个分片怎样分布,它的文档怎样聚合回搜索请求,是完全由Elasticsearch管理的,对于用户来说,这些都是透明的。在一个网络/云的环境里,失败随时都可能发生。在某个分片/节点因为某些原因处于离线状态或者消失的情况下,故障转移机制是非常有用且强烈推荐的。为此, Elasticsearch允许创建分片的一份或多份拷贝,这些拷贝叫做复制分片,或者直接叫复制。

复制之所以重要,有两个主要原因:

在分片/节点失败的情况下,复制提供了高可用性。复制分片不与原/主要分片置于同一节点上是非常重要的。因为搜索可以在所有的复制上并行运行,复制可以扩展你的搜索量/吞吐量

总之,每个索引可以被分成多个分片,一个索引也可以被复制0次或多次。一旦复制了,每个索引就有了主分片和复制分片。分片和复制的数量可以在索引创建的时候指定。在索引创建之后,可以在任何时候动态地改变复制的数量,但是不能再改变分片的数量。在Elasticsearch7.0版本之前,默认情况下,Elasticsearch中的每个索引分配5个主分片和1个复制。这意味着,如果你的集群中至少有两个节点,你的索引将会有5个主分片和另外5个复制分片(1个完全拷贝),这样每个索引总共就有10个分片(根据官方文档,在7.0版本上,默认的分片数量会有所变化)。

好了,今天的介绍就先到这里。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

331

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

236

2023.10.07

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

420

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

536

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

312

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

810

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1129

2023.07.27

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.2万人学习

Git 教程
Git 教程

共21课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号