文章目录
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 个节点,测试成功
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
当我执行>rvminstall1.9.2时一切顺利。然后我做>rvmuse1.9.2也很顺利。但是当涉及到ruby-v时..sam@sjones:~$rvminstall1.9.2/home/sam/.rvm/rubies/ruby-1.9.2-p136,thismaytakeawhiledependingonyourcpu(s)...ruby-1.9.2-p136-#fetchingruby-1.9.2-p136-#downloadingruby-1.9.2-p136,thismaytakeawhiledependingonyourconnection...%Total%Rece