技术标签: ElasticSearch 新特性 ElasticSearch8 集群安装
2022年2月11日,Elasticsearch
发布了全新的8.0正式版本,新版本中通过改进Elasticsearch
的矢量搜索功能、对现代自然语言处理模型(NLP
)的原生支持、不断简化的数据上线过程,以及精简的安全防护体验,在速度、扩展幅度、相关性和简便性方面迎来了一个全新的时代。
从2019年4月Elasticsearch7.0
版本的发布,到2022年2月Elasticsearch8.0
版本发布,基于不断优化开发设计理念,Elasticsearch
发布了一系列的小版本。这些小版本在以下方面取得了长足的进步并同时引入一些全新的功能:
pre-filter
搜索短语Elasticsearch7.3
和 Elasticsearch7.4
版中,引入了对矢量相似函数的支持在最新发布的Elasticsearch8.0
版本中,也同样增加和完善了很多新的功能
NLP
) 模型的原生支持,让矢量搜索功能更容易实现,让客户和员工能够使用他们自己的文字和语言来搜索并收到高度相关的结果Elasticsearch
中执行命名实体识别、情感分析、文本分类等,而无需使用额外 的组件或进行编码Elasticsearch8.0
基于Lucene 9.0
开发的,那些利用现代NLP
的搜索体验,都可以借 助(新增的)对近似最近邻搜索的原生支持,快速且大规模地实现。通过ANN
,可以快速并高效地将基于矢量的查询与基于矢量的文档语料库(无论是小语料库、大语料库 还是巨型语料库)进行比较Elasticsearch
中使用 PyTorch Machine Learning
模型(如 BERT
),并在Elasticsearch
中原生使用这些模型执行推理Elasticsearch8
最新版本依赖Java JDK17
,所以在安装 ES
软件前,需要下载使用 Java JDK17
,但不使用也没关系
Elasticsearch
官方地址:https://www.elastic.co/cn/
Elasticsearch
下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
对于Java
开发人员,更熟悉的开发版本应该是 JDK1.8
,突然需要升级到 JDK17
,其实本身会感觉有点不适应,甚至会有点排斥,担心升级后会对现有的程序代码造成影响。
其实,对于JDK1.8
,最新版本的 JDK17
增加了很多的语法特性。对于大多数项目而言,想要利用这些新的特性,是需要修改代码的,但性能除外。
也就是说,升级 JDK
版本,现有代码即使不进行修改,也不会出现兼容问题,但性能会得到极大的提升,并且高吞吐量垃圾回收器比低延迟垃圾回收器更快,更重要的是它可以免费商用。
对于升级版本而言,如果你依然有顾虑,一个好的消息就是可以下载含有适配 JDK
的 ES
版本,上面提到的内容基本上就不用考虑。
安装Elasticsearch
采用Linux
集群配置,准备三台Linux
虚拟机,用于安装 Elasticsearch8
集群。
启动集群后,每台虚拟机的进程如下:
主机名 | linux1 | linux2 | linux2 |
---|---|---|---|
进程名 | es-node-1 | es-node-2 | es-node-3 |
给三台虚拟机搭建Elasticsearch
集群,集群中-节点名称依次为:es-node-1
,es-node-2
,es-node-3
将压缩包elasticsearch-8.1.0-linux-x86_64.tar.gz
上传到虚拟机中
解压缩文件到自定义路径,本人解压路径为:/opt/module
,解压后,软件路径为:/opt/module/elasticsearch-8.1.0
# 切换目录
cd software
# 解压缩
tar -zxvf elasticsearch-8.1.0-linux-x86_64.tar.gz -C /opt/module
解压后的Elasticsearch
的目录结构如下
目录 | 含义 |
---|---|
bin | 可执行脚本目录 |
config | 配置目录 |
jdk | 内置 JDK 目录 |
lib | 类库 |
logs | 日志目录 |
modules | 模块目录 |
plugins | 插件目录 |
注意:当前安装 ES 版本为 8.1.0,自带 JDK,所以当前 Linux 虚拟机节点无需配置 Java 环境
创建Linux
新用户es
,数据文件,证书目录,并修改Elasticsearch
文件拥有者
# 新增 es 用户
useradd es
# 为 es 用户设置密码
passwd es
# 创建数据文件目录
mkdir /opt/module/elasticsearch-8.1.0/data
# 创建证书目录
mkdir /opt/module/elasticsearch-8.1.0/config/certs
#切换目录
cd /opt/module/elasticsearch-8.1.0
# 修改文件拥有者
chown -R es:es /opt/module/elasticsearch-8.1.0
在第一台服务器节点 es-node-1
设置集群多节点通信密钥
# 切换用户
su es
# 签发 ca 证书,过程中需按两次回车键
bin/elasticsearch-certutil ca
# 用 ca 证书签发节点证书,过程中需按三次回车键
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
# 将生成的证书文件移动到 config/certs 目录中
mv elastic-stack-ca.p12 elastic-certificates.p12 config/certs
在第一台服务器节点 es-node-1
设置集群多节点 HTTP
证书
# 签发 Https 证书
bin/elasticsearch-certutil http
每次要求输入时,需要输入的内容
-
指定证书路径
IP
地址解压刚生成的zip
包
# 解压文件
unzip elasticsearch-ssl-http.zip
# 移动文件 将解压后的证书文件移动到 config/certs 目录中
mv elasticsearch/http.p12 kibana/elasticsearch-ca.pem config/certs
修改主配置文件:config/elasticsearch.yml
# 设置 ES 集群名称
cluster.name: es-cluster
# 设置集群中当前节点名称
node.name: es-node-1
# 设置数据,日志文件路径
path.data: /opt/module/elasticsearch-8.1.0/data
path.logs: /opt/module/elasticsearch-8.1.0/log
# 设置网络访问节点
network.host: linux1
# 设置网络访问端口
http.port: 9200
# 初始节点
discovery.seed_hosts: ["linux1"]
# 安全认证
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: /opt/module/elasticsearch-8.1.0/config/certs/http.p12
truststore.path: /opt/module/elasticsearch-8.1.0/config/certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: /opt/module/elasticsearch-8.1.0/config/certs/elastic-certificates.p12
truststore.path: /opt/module/elasticsearch-8.1.0/config/certs/elastic-certificates.p12
# 此处需注意,es-node-1 为上面配置的节点名称
cluster.initial_master_nodes: ["es-node-1"]
http.host: [local, site]
ingest.geoip.downloader.enabled: false
xpack.security.http.ssl.client_authentication: none
# 启动 ES 软件
bin/elasticsearch
第一次成功启动后,会显示密码,请记住,访问时需要。只有第一次才有!!!
注意:
9300 端口为 Elasticsearch 集群间组件的通信端口
9200 端口为浏览器访问的http协议RESTful端口
访问服务器节点:https://虚拟机地址:9200
。因为配置了安全协议,所以使用 https
协议进行访问,但由于证书是自己生成的,并不可靠,所以会有安全提示,选择继续即可
输入账号,密码登录,即可看到页面会有如下信息
修改集群中其他节点的配置文件:config/elasticsearch.yml
。
linux2
:证书直接拷贝,其他步骤完全相同,配置文件中修改如下内容即可
# 设置节点名称
node.name: es-node-2
# 设置网络访问主机
network.host: linux2
linux3
:证书直接拷贝,其他步骤完全相同,配置文件中修改如下内容即可
# 设置节点名称
node.name: es-node-3
# 设置网络访问主机
network.host: linux3
依次启动集群的三台服务器节点,不要忘记切换用户后再启动
# linux1:后台启动服务
bin/elasticsearch -d
# linux2: 后台启动服务
bin/elasticsearch -d
# linux3: 后台启动服务
bin/elasticsearch -d
Elasticsearch
是使用 Java
开发的,Elasticsearch8.1
版本需要 JDK17
及以上版本。
默认安装包中带有 JDK
环境,如果系统配置 ES_JAVA_HOME
环境变量,那么会采用系统配置的JDK
。如果没有配置该环境变量,Elasticsearch
会使用自带捆绑的 JDK
,虽然自带的 JDK
是 Elasticsearch
软件推荐的 Java
版本,但一般建议使用系统配置的 JDK
。
Windows
环境中出现下面的错误信息,是因为开启了 SSL
认证,可以将SSL
认证关闭
修改 config/elasticsearch.yml
文件,将 enabled
的值修改为 false
xpack.security.http.ssl:
enabled: false
keystore.path: certs/http.p12
启动成功后,如果访问 localhost:9200
地址后
弹出登录窗口,第一次启动时,因为开启了密码验证模式,在启动窗口中会显示输入账号和密码。如果没有注意到或没有找到账号密码,可以设置免密登录:
xpack.security.enabled: false
双击启动窗口闪退,通过路径访问追踪错误,如果是空间不足,请修改config/jvm.options
配置文件
# 设置 JVM 初始内存为 1G。此值可以设置与-Xmx 相同,以避免每次垃圾回收完成后 JVM 重新分配内存
# Xms represents the initial size of total heap space
# 设置 JVM 最大可用内存为 1G
# Xmx represents the maximum size of total heap space
-Xms4g
-Xmx4g
启动后,如果密码忘记了,可以采用指令重置密码
# 使用 es 用户,执行指令,重置 elastic 用户密码
bin/elasticsearch-reset-password -u elastic
如果只启动单一节点,此操作可能会失败,至少启动 2 个节点,测试成功
文章浏览阅读685次。1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?服务端保存大量数据,增加服务端压力 服务端保存用户状态,无法进行水平扩展 客户端请求依赖服务.._无状态token登录
文章浏览阅读293次。SDUT OnlineJudge#include<iostream>using namespace std;int main(){int a,b,c,d;cin>>a;b=a%10;c=a/10%10;d=a/100%10;int key[3];key[0]=b;key[1]=c;key[2]=d;for(int i = 0;i<3;i++){ if(key[i]!=0) { cout<<key[i.
文章浏览阅读2.2k次。年终奖采用的平均每月的收入来评定缴税级数的,速算扣除数也按照月份计算出来,但是最终减去的也是一个月的速算扣除数。为什么这么做呢,这样的收的税更多啊,年终也是一个月的收入,凭什么减去12*速算扣除数了?这个霸道(不要脸)的说法,我们只能合理避免的这些跨级的区域了,那具体是那些区域呢?可以参考下面的表格:年终奖一列标红的一对便是盲区的上下线,发放年终奖的数额一定一定要避免这个区域,不然公司多花了钱..._年终奖盲区表
文章浏览阅读7.5k次,点赞5次,收藏19次。matlab结构体struct字段变量值提取_matlab读取struct类型数据中的值
文章浏览阅读4.8k次。1,什么情况下使用fragment通常用来作为一个activity的用户界面的一部分例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输_android reader fragment
文章浏览阅读2.8k次。FFT of waveIn audio signalsBy Aqiruse An article on using the Fast Fourier Transform on audio signals. IntroductionThe Fast Fourier Transform (FFT) allows users to view the spectrum content of _fft of wavein audio signals
文章浏览阅读5.9k次。https://jaywcjlove.github.io/awesome-mac/ 这个仓库主要是收集非常好用的Mac应用程序、软件以及工具,主要面向开发者和设计师。有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章《工具武装的前端开发工程师》,于是建了这么一个仓库,持续更新作为补充,搜集更多好用的软件工具。请Star、Pull Request或者使劲搓它 issu_awesomemac
文章浏览阅读616次。一.jquery简介 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互 jQuery 的功能概括1、html 的元素选取2、html的元素操作3、html dom遍历和修改4、js特效和动画效果5、css操作6、html事件操作7、ajax_简介java中jquery技术
文章浏览阅读1.6w次,点赞5次,收藏19次。我修改的是表格的固定列滚动而产生的滚动条引用Table的组件的css文件中加入下面的样式:.ant-table-body{ &amp;::-webkit-scrollbar { height: 5px; } &amp;::-webkit-scrollbar-thumb { border-radius: 5px; -webkit-box..._ant design ::-webkit-scrollbar-corner
文章浏览阅读269次。基于JSP的健身俱乐部会员管理系统项目分享:见文末!
文章浏览阅读1.8k次,点赞2次,收藏15次。同学们,是不是又到了一年一度写开题报告的时候呀?是不是还在为不知道论文的开题报告怎么写而苦恼?Take it easy!我带着倾尽我所有开题报告写作经验总结出来的最强保姆级开题报告解说来啦,一定让你脱胎换骨,顺利拿下开题报告这个高塔,你确定还不赶快点赞收藏学起来吗?_开题报告研究难点
文章浏览阅读6k次,点赞4次,收藏17次。原生先获取对象var a = document.getElementById("dom");vue先添加ref <div class="" ref="divBox">获取对象let a = this.$refs.divBox获取父、子、兄弟节点方法var b = a.childNodes; 获取a的全部子节点 var c = a.parentNode; 获取a的父节点var d = a.nextSbiling; 获取a的下一个兄弟节点 var e = a.previ_获取子节点的路径 vue