Linux(centos)安装es(elasticsearch)
<p> </p><p>前提条件——需要安装jdk环境,不同版本的es所对应的jdk版本要求不同,es6的使用jdk1.8可以</p>
<p>1、下载elasticsearch压缩包 下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-6-0,点击下载</p>
<p> </p>
<p> </p>
<p> </p>
<p><img src="https://img2020.cnblogs.com/blog/1092624/202004/1092624-20200404162823471-1953794926.png" alt="" width="622" height="351"></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>2、上传到centos上,我们这里上传到 /usr/web/elasticsearch 文件夹下,并解压文件</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">tar -zxvf elasticsearch-6.6.0.tar.gz
</pre>
</div>
<p> </p>
<p>3、进入解压后目录</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">cd elasticsearch-6.6.0/bin
</pre>
</div>
<p> 启动</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">./elasticsearch</pre>
</div>
<p> </p>
<p>出现以下报错,这是因为elasticsearch为了安全性,是不能用root用户启动的。 切换其他账号,或者新建账号 创建账号可以参考 https://www.cnblogs.com/pxblog/p/13572044.html</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;"> uncaught exception in thread
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~
at org.elasticsearch.cli.Command.main(Command.java:90) ~
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~
... 6 more
</pre>
</div>
<p> </p>
<p>重新使用启动命令,出现以下报错,报这个错是因为用户的权限不足,因此在配置和启动ElasticSearch节点的时候要注意给用户赋予对应的权限</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">Exception in thread "main" java.nio.file.AccessDeniedException: /usr/web/elasticsearch/elasticsearch-6.6.0/config/jvm.options
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.Files.newByteChannel(Files.java:361)
at java.nio.file.Files.newByteChannel(Files.java:407)
at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
at java.nio.file.Files.newInputStream(Files.java:152)
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:60)</pre>
</div>
<p> 现在切换到root账号,执行以下命令,执行完之后需要在切换到原来的账号 </p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">chown -R elas:elas /usr/web/elasticsearch
</pre>
</div>
<p> 其中,elas是用户名 后面是elasticsearch文件路径</p>
<p> 在开发使用过程中,我们可以限制elasticsearch使用的内存大小</p>
<p> 进入elasticsearch的目录下config文件夹 </p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">vim jvm.options
</pre>
</div>
<p> 注:如果打开是空的,可能是由于没有权限,使用root账号进行修改</p>
<p><img src="https://img2020.cnblogs.com/blog/1092624/202004/1092624-20200404171344851-886359787.png" alt=""></p>
<p> </p>
<p>elasticsearch 要求至少1g启动内存,所以内存不够,我们可以设置的小一点,修改为256m,如图所示</p>
<p> </p>
<p><img src="https://img2020.cnblogs.com/blog/1092624/202004/1092624-20200404171732540-1299102117.png" alt=""></p>
<p>修改完成之后,保存退出</p>
<p> </p>
<p>现在默认我们只能在linux服务器上访问elasticsearch ,如果要使得我们在外网也能访问 elasticsearch ,需要修改配置文件</p>
<p>进入elasticsearch文件目录下的config文件夹中</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">vim elasticsearch.yml
</pre>
</div>
<p> 默认是</p>
<p><img src="https://img2020.cnblogs.com/blog/1092624/202004/1092624-20200404174157479-1559580148.png" alt=""></p>
<p> </p>
<p> </p>
<p> 修改成</p>
<p><img src="https://img2020.cnblogs.com/blog/1092624/202004/1092624-20200404174354116-647181359.png" alt=""></p>
<p> </p>
<p> 注:9200是外网访问端口,所以如果启动了防火墙,需要把端口配置下,可以参照:https://www.cnblogs.com/pxblog/p/12222150.html </p>
<p> (需要9200和9300两个端口都要开启,9200是web端访问端口,9300是开发程序访问端口)</p>
<p> 修改完成之后,保存退出</p>
<p>然后进入bin目录启动,重新启动</p>
<p>如果出现以下报错</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">org.elasticsearch.bootstrap.StartupException: BindTransportException]; nested: BindException[无法指定被请求的地址];
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~
at org.elasticsearch.cli.Command.main(Command.java:90) ~
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~
Caused by: org.elasticsearch.transport.BindTransportException: Failed to bind to
at org.elasticsearch.transport.TcpTransport.bindToPort(TcpTransport.java:408) ~
at org.elasticsearch.transport.TcpTransport.bindServer(TcpTransport.java:375) ~
at org.elasticsearch.transport.netty4.Netty4Transport.doStart(Netty4Transport.java:136) ~[?:?]
at org.elasticsearch.xpack.core.security.transport.netty4.SecurityNetty4Transport.doStart(SecurityNetty4Transport.java:127) ~[?:?]
at org.elasticsearch.xpack.security.transport.netty4.SecurityNetty4ServerTransport.doStart(SecurityNetty4ServerTransport.java:46) ~[?:?]
at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:72) ~
at org.elasticsearch.transport.TransportService.doStart(TransportService.java:228) ~
at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:72) ~
at org.elasticsearch.node.Node.start(Node.java:741) ~
at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:269) ~
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) ~
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~
... 6 more
Caused by: java.net.BindException: 无法指定被请求的地址
at sun.nio.ch.Net.bind0(Native Method) ~[?:?]
at sun.nio.ch.Net.bind(Net.java:433) ~[?:?]
at sun.nio.ch.Net.bind(Net.java:425) ~[?:?]
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) ~[?:?]
at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:130) ~[?:?]
at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:562) ~[?:?]
at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1358) ~[?:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:501) ~[?:?]
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:486) ~[?:?]
at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:1019) ~[?:?]
at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:258) ~[?:?]
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:366) ~[?:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) ~[?:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) ~[?:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:474) ~[?:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:909) ~[?:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]</span></pre>
</div>
<p>将上一步中的elasticsearch.yml 的network.host改成0.0.0.0</p>
<p> </p>
<p> <img src="https://img2020.cnblogs.com/blog/1092624/202008/1092624-20200827164739739-754038484.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<p> </p>
<p>出现以下报错 说明现在的环境不符合elasticsearch的要求</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">ERROR: bootstrap checks failed
: max file descriptors for elasticsearch process is too low, increase to at least
stopping ...
stopped
closing ...
closed
</pre>
</div>
<p> </p>
<p>(1)、修改系统配置文件 (切换到root用户)</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">vim /etc/security/limits.conf
</pre>
</div>
<p> 增加以下内容,如图所示</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">* hard nofile 655360
* soft nofile 131072
* hard nproc 4096
* soft nproc 4096
</pre>
</div>
<p> 其中:</p>
<p> nofile - 打开文件的最大数目</p>
<p> noproc - 进程的最大数目</p>
<p> soft 指的是当前系统生效的设置值</p>
<p> hard 表明系统中所能设定的最大值</p>
<p> <img src="https://img2020.cnblogs.com/blog/1092624/202103/1092624-20210327011602995-2047796492.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<p> </p>
<p> 然后保存退出</p>
<p> </p>
<p>(2)修改系统最大内存数,进入</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">vim /etc/sysctl.conf
</pre>
</div>
<p> 默认是</p>
<p><img src="https://img2020.cnblogs.com/blog/1092624/202004/1092624-20200404180503891-1422614607.png" alt=""></p>
<p> </p>
<p> 修改为</p>
<p><img src="https://img2020.cnblogs.com/blog/1092624/202004/1092624-20200404180612600-770456420.png" alt=""></p>
<p> </p>
<p>如果没有上述内容,直接添加以下内容进去即可</p>
<p> </p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">vm.max_map_count=655360
fs.file-max=655360
</pre>
</div>
<p> 修改好之后,保存退出</p>
<p>使的我们修改的配置文件生效</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">sysctl -p
</pre>
</div>
<p> </p>
<p> </p>
<p> </p>
<p>重新启动。切换到普通账号启动elasticsearch,启动成功后,我们可以使用 -d 命令进行后台启动,进入elasticsearch文件夹目录的bin文件夹</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">./elasticsearch -d
</pre>
</div>
<p> 或者</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">nohup ./elasticsearch &
</pre>
</div>
<p> </p>
<p> </p>
<p>打开浏览器输入</p>
<p>http://192.168.0.102:9200/ 出现</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">{
"name" : "5GagyKc",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "ziiT6TFMSiaTuDqjEwrlfA",
"version" : {
"number" : "6.6.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "a9861f4",
"build_date" : "2019-01-24T11:27:09.439740Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
</pre>
</div>
<p> </p>
<p>其中 192.168.0.102 是我的虚拟机地址</p>
<p> </p>
<p>关闭程序</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;"># ps -ef|grep elastic
elas+47702 1 10 17:19 pts/1 00:00:20 /usr/web/java/jdk1.8/bin/java -Xms256m -Xmx256m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch-4781675233424590824 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Des.path.home=/usr/web/elasticsearch/elasticsearch-6.6.0 -Des.path.conf=/usr/web/elasticsearch/elasticsearch-6.6.0/config -Des.distribution.flavor=default -Des.distribution.type=tar -cp /usr/web/elasticsearch/elasticsearch-6.6.0/lib/* org.elasticsearch.bootstrap.Elasticsearch -d
</pre>
</div>
<p> 然后杀掉对应的进程</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">kill 47702
</pre>
</div>
<p> </p>
<p> </p>
<p> es(elasticsearch)安装IK中文分词器参考:https://www.cnblogs.com/pxblog/p/12633189.html</p>
<p> centos7使用docker安装es(elasticsearch):参考:https://www.cnblogs.com/pxblog/p/12234561.html</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
-----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------
(蓝奏云官网如果有地址失效了,可以私信我,后续看到会补充)<br><br>
来源:https://www.cnblogs.com/pxblog/p/12632756.html
頁:
[1]