ES(ElasticSearch)的安装与启动

news/2024/11/17 20:44:10/文章来源:https://www.cnblogs.com/AiTtang/p/18426333

1.ElasticSearch介绍

1.1.什么是ES

​ ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个基于RESTful web接口的分布式全文搜索引擎。ElasticSearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。根据DB-Engines的排名显示,ElasticSearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基Lucene)。

总结:

​ 1、elasticsearch是一个基于Lucene的分布式全文检索服务器。

​ 2、elasticsearch隐藏了Lucene的复杂性,对外提供Restful 接口来操作索引、搜索。

es和solr选择哪个?

1.如果你公司现在用的solr可以满足需求就不要换了。

2.如果你公司准备进行全文检索项目的开发,建议优先考虑elasticsearch,因为像Github这样大规模的搜索都在用它。

1.2.Lucene->ES的发展

​ 多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。

​ 直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便Java程序员可以在应用中添加搜索功能。他发布了他的第一个开源项目,叫做“Compass”。

​ 后来Shay找到一份工作,这份工作处在高性能和内存数据网格的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为一个独立的服务叫做Elasticsearch。

​ 第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github上最受欢迎的项目之一,代码贡献者超过300人。一家主营Elasticsearch的公司就此成立,他们一边提供商业支持一边开发新功能,不过Elasticsearch将永远开源且对所有人可用。

1.3.原理与应用

1.3.1.索引结构

​ 下图是ElasticSearch的索引结构,右边黑蓝色色部分是原始文档,左边黄色部分是逻辑结构,逻辑结构也是为了更好的去描述ElasticSearch的工作原理及去使用物理结构中的索引文件。

1.3.2.倒排索引

倒排索引(Inverted index):也常被称为反向索引,倒排索引是从关键字到文档的映射(已知关键字求文档)。

逻辑结构部分是一个倒排索引表,由三部分组成:

1、将搜索的文档最终以Document方式存储起来。

2、将要搜索的文档内容分词,所有不重复的词组成分词列表。

3、每个分词和docment都有关联

如下:

现在,如果我们想搜索 包含quick brown词条的文档:

两个文档都匹配,但是第一个文档比第二个匹配度更高。如果我们使用仅计算匹配词条数量的简单 相似性算法 ,那么,我们可以说,对于我们查询的相关性来讲,第一个文档比第二个文档更佳。

1.3.3 RESTful应用方法

如何使用es?

Elasticsearch提供 RESTful Api接口进行索引、搜索,并且支持多种客户端。

2.安装 ElasticSearch

2.1.环境需求

1、jdk必须是jdk1.8.0_131以上版本。

2、ElasticSearch 需要至少4096 的线程池和 262144字节以上空间的虚拟内存才能正常启动,所以需要为虚拟机分配至少1.5G以上的内存

3、从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动

4、Elasticsearch的插件要求至少centos的内核要3.5以上版本

2.2.安装ES

2.2.1.下载

ElasticSearch官网:https://www.elastic.co/cn/

2.2.2.设置虚拟机内存

2.4.3.创建用户

从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动,所以我们要添加一个用户。

1.创建elk 用户组

groupadd elk

2.创建用户admin

useradd admin
passwd admin

3.将admin用户添加到elk组

usermod -G elk admin

5.为用户分配权限

#chown将指定文件的拥有者改为指定的用户或组 -R处理指定目录以及其子目录下的所有文件
chown -R admin:elk /usr/upload
chown -R admin:elk /usr/local

切换用户:

su admin

2.2.2.安装

ES是Java开发的应用,解压即安装:

tar -zxvf elasticsearch-6.2.3.tar.gz -C /usr/local

2.2.3.ES目录结构

bin 目录:可执行文件包
config 目录:配置相关目录
lib 目录:ES 需要依赖的 jar 包,ES 自开发的 jar 包
logs 目录:日志文件相关目录
modules 目录:功能模块的存放目录,如aggs、reindex、geoip、xpack、eval
plugins 目录:插件目录包,三方插件或自主开发插件
data 目录:在 ES 启动后,会自动创建的目录,内部保存 ES 运行过程中需要保存的数据。

2.3.配置文件

ES安装目录config中配置文件如下:

​ elasticsearch.yml:用于配置Elasticsearch运行参数

​ jvm.options:用于配置Elasticsearch JVM设置

​ log4j2.properties:用于配置Elasticsearch日志

2.3.1.elasticsearch.yml

本项目配置如下:

cluster.name: power_shop
node.name: power_shop_node_1
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301"]
path.data: /usr/local/elasticsearch-6.2.3/data
path.logs: /usr/local/elasticsearch-6.2.3/logs
http.cors.enabled: true
http.cors.allow-origin: /.*/

注意意path.data和path.logs路径配置正确。

常用的配置项如下:

cluster.name:配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。   
node.name:节点名,通常一台物理服务器就是一个节点,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理一个或多个节点组成一个cluster集群,集群是一个逻辑的概念,节点是物理概念,后边章节会详细介绍。
path.data:设置索引数据的存储路径,默认是es_home下的data文件夹,可以设置多个存储路径,用逗号隔开。      
path.logs:设置日志文件的存储路径,默认是es_home下的logs文件夹         
network.host:  设置绑定主机的ip地址,设置为0.0.0.0表示绑定任何ip,允许外网访问,生产环境建议设置为具体的ip。   
http.port: 9200设置对外服务的http端口,默认为9200。      
transport.tcp.port: 9300 集群结点之间通信端口      
discovery.zen.ping.unicast.hosts:[“host1:port”, “host2:port”, “…”]  设置集群中master节点的初始列表。
discovery.zen.ping.timeout: 3s  设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些。
http.cors.enabled:是否支持跨域,默认为false
http.cors.allow-origin:当设置允许跨域,默认为*,表示支持所有域名

2.3.2. jvm.options

设置最小及最大的JVM堆内存大小:

在jvm.options中设置 -Xms和-Xmx:

1) 两个值设置为相等

2) 将Xmx 设置为不超过物理内存的一半。

默认内存占用太多了,我们调小一些:

-Xms512m
-Xmx512m

2.3.3.log4j2.properties

日志文件设置,ES使用log4j,注意日志级别的配置。

2.4.启动ES

2.4.1.启动和关闭

1、启动

./elasticsearch
#或
./elasticsearch -d            

2、关闭

ps-ef|grep elasticsearchkill -9 pid

2.4.2.解决内核问题

我们使用的是centos6,其linux内核版本为2.6。而Elasticsearch的插件要求至少3.5以上版本。不过没关系,我们禁用这个插件即可。

修改elasticsearch.yml文件,在最下面添加如下配置:

bootstrap.system_call_filter: false

2.4.3.解决文件创建权限问题

[1]: max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

Linux 默认来说,一般限制应用最多创建的文件是 4096个。但是 ES 至少需要 65536 的文件创建权限。我们用的是admin用户,而不是root,所以文件权限不足。

使用root用户修改配置文件:

vim /etc/security/limits.conf

追加下面的内容:

* soft nofile 65536
* hard nofile 65536

2.4.4.解决线程开启限制问题

[2]: max number of threads [1024] for user [admin] is too low, increase to at least [4096]

​ 默认的 Linux 限制 root 用户开启的进程可以开启任意数量的线程,其他用户开启的进程可以开启1024 个线程。必须修改限制数为4096+。因为 ES 至少需要 4096 的线程池预备。

​ 如果虚拟机的内存是 1G,最多只能开启 3000+个线程数。至少为虚拟机分配 1.5G 以上的内存。

使用root用户修改配置:

vim /etc/security/limits.d/90-nproc.conf

修改下面的内容:

* soft nproc 1024

改为:

* soft nproc 4096

2.4.5.解决虚拟内存问题

[3]: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

ES 需要开辟一个 262144字节以上空间的虚拟内存。Linux 默认不允许任何用户和应用直接开辟虚拟内存。

vim /etc/sysctl.conf

追加下面内容:

vm.max_map_count=655360 #限制一个进程可以拥有的VMA(虚拟内存区域)的数量

然后执行命令,让sysctl.conf配置生效:

sysctl -p

2.5.测试

​ ES 中只要启动了任意一个 ES 应用就是启动了一个 ES的 cluster 集群。默认的 ES集群命名为 elasticsearch。如果启动了多个应用(可以在多个节点或单一节点上启动多个应用),默认的ES 会自动找集群做加入集群的过程。

浏览器访问:http://192.168.204.132:9200

返回结果如下:

{"name" : "power_shop_node_1", # node name 结点名称。随机分配的结点名称"cluster_name" : "power_shop", # cluster name 集群名称。 默认的集群名称"cluster_uuid" : "RqHaIiYjSoOyrTGq3ggCOA", # 集群唯一 ID"version" : {"number" : "6.2.3", #版本号"build_hash" : "c59ff00", "build_date" : "2018-03-13T10:06:29.741383Z",#发布日期"build_snapshot" : false,#是否快照版本"lucene_version" : "7.2.1",#lucene版本号"minimum_wire_compatibility_version" : "5.6.0","minimum_index_compatibility_version" : "5.0.0"},"tagline" : "You Know, for Search"
}

3.安装Kibana

什么是Kibana

​ Kibana是ES提供的一个基于Node.js的管理控制台, 可以很容易实现高级的数据分析和可视化,以图标的形式展现出来。

​ kibana可以用来编辑请求语句的,方便学习操作es的语法。有时在进行编写程序,写到查询语句时,往往我会使用kibana进行书写,然后再粘贴到程序中。(不容易出错)

下载

ElasticSearch官网:https://www.elastic.co/cn/

安装

在window中安装Kibana很方便,解压即安装

修改配置

修改config/kibana.yml配置:

server.port: 5601
server.host: "0.0.0.0" #允许来自远程用户的连接
elasticsearch.url: http://192.168.204.132:9200 #Elasticsearch实例的URL 

启动

./bin/kibana

测试

浏览器访问:http://127.0.0.1:5601

4.安装head

4.1.什么是head

head插件是ES的一个可视化管理插件,用来监视ES的状态,并通过head客户端和ES服务进行交互,比如创建映射、创建索引等。从ES6.0开始,head插件支持使得node.js运行。

4.2.安装

1、下载head

​ 下载地址:https://github.com/mobz/elasticsearch-head

2、运行

npm run start

4.3.测试

浏览器访问:http://127.0.0.1:9100/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/802028.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易优eyoucms为何新建栏目只有文章模型、图集模型等模型,其他类型的模型去哪了?

如果你在新建栏目时发现只有“文章模型”、“图集模型”等几种模型,而其他类型的模型不见了,通常是因为这些模型尚未被启用或者需要特定的功能才能使用。以下是详细的解决步骤: 解决方案启用更多模型进入更多功能: 登录网站后台,找到“更多功能”菜单。进入频道模型: 在“…

安装程序的时候提示数据库版本与程序不符怎么办?

当你在安装程序时遇到“数据库版本与程序不符”的提示,这通常意味着你的数据库版本与程序所要求的版本不匹配。解决这一问题的方法取决于数据库版本是高于还是低于程序所需的版本。 当数据库版本高于程序版本时下载更高版本的程序: 下载与数据库版本相匹配的更高版本的程序包…

网站的后台访问地址是什么

网站后台的访问地址通常可以通过默认的文件名来确定。如果你忘记了后台的访问地址,可以通过检查根目录下的 PHP 文件来找到正确的入口。以下是一些常见的后台访问地址及其查找方法: 1. 常见的后台访问地址默认地址:你的域名/login.php 你的域名/admin.php 你的域名/admin/in…

EyouCms去除URL中的index.php

为了去掉 URL 上的 index.php 字符,可以根据不同的服务器环境进行相应的配置。以下是针对 Nginx、Apache 和 IIS 服务器的具体配置方法。 1. Nginx 服务器 主目录配置 在原有的 Nginx 重写文件里新增以下代码片段:location / {if (!-e $request_filename) {rewrite ^(.*)$ /i…

城市道路井盖安全监测系统

城市道路井盖安全监测系统基于计算机人工智能视觉分析技术,城市道路井盖安全监测系统可以自动对城市道路井盖或者园区厂区井盖进行检测,如果通过监控摄像头检测到发现某个井盖缺失,城市道路井盖安全监测系统可以立即抓拍并回传给后台监控工作人员及时处理及时设指示标识,以…

如何查杀网站(服务器)空间木马

为了确保网站的安全性和完整性,按照您提供的步骤进行操作是非常必要的。以下是详细的步骤说明,请务必按照顺序逐步操作,并确保每一步都正确无误。 1. 备份网站数据库与源码文件 在进行任何操作前,请先备份网站的数据库和源码文件。这一步非常重要,以防万一出现问题时可以恢…

设备指示灯开关状态识别检测系统

设备指示灯开关状态识别检测系统是基于yolo网络图像识别系统,无需新增硬件设备指示灯开关状态识别检测系统利用现场已有的监控摄像头代替人工巡检,实现7*24小时自动识别仪表示数或开关状态,通过平台上报管理员提高仪表读数识别的工作效率并降低出错率。设备指示灯开关状态识…

河道非法采砂识别系统

河道非法采砂识别系统利用河道两旁摄像头自动对指定区域进行实时检测,一旦河道非法采砂识别系统检测到人员非法采砂时,无需人工干预系统会自动告警,同步回传监控管理中心,提醒后台相关人员及时处理。河道非法采砂识别系统对河道区域进行进行7*24小时不间断实时监测,当监测…

渣土车空车未盖盖识别系统

渣土车空车未盖盖识别系统通过OpenCv+yolo网络实时监控路过的渣土车情况,渣土车空车未盖盖识别系统对没有盖盖或者空车的渣土车进行抓拍。渣土车空车未盖盖识别系统利用城市道路两旁的监控摄像头对交通来往车辆进行识别抓拍,若是空车或者没有盖盖,即会抓拍同步将截图发给后台…

基于Qt的串口调试工具串口常见问题

1.项目地址https://github.com/zhangjiechina001/SerialPortTool2.使用注意串口的所有参数波特率、数据位、校验位、停止位、控制流都需要设置正确,设置错了有时会连接上但是传输的数据会很奇怪,有时直接连接不上了 串口通信中一般不需要像网络通信那样明确的保活机制(Keep-…

记一次 RabbitMQ 消费者莫名消失问题的排查

开心一刻 今天好哥们找我借钱哥们:兄弟,我最近手头紧,能不能借我点...我:我手头也不宽裕,要不你试试银行贷款或者花呗?哥们:不行,那个借了要还的我:...问题回顾 某天下午,生产监控告警:消息积压,队列 xxx 消息数超过 100;我第一时间想到的是应用服务是不是停了,但…

大模型应用开发初探 : 快速直观感受RAG

检索增强生成(Retrieval Augmented Generation),简称 RAG,它是根据用户输入的提示词,通过自有垂域数据库检索相关信息,然后合并成为一个新的“完备的“提示词,最后再给大模型生成较为准确的回答。这一篇,我们来快速了解下RAG(检索增强生成)并通过一个简单的DEMO来直观…