文档地址:

https://www.elastic.co/guide/en/elasticsearch/reference/6.5/setup.html

官方页面提供自0.9版本以来的说明文档,由于我下载的是6.5.4版本,因此通过6.5版本的文档进行安装配置。

本文的安装测试环境为Red Had Linux 6.5,关于elastic对各系统的支持度,参见:https://www.elastic.co/support/matrix

Java版本:

要求至少java 8,官方推荐的版本为:1.8.0_131 or a later version in the Java 8 release series

你可以通过修改JAVA_HOME参数指定java版本。

一、下载和安装、启动:

本文使用的6.5.4版本下载地址为:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz

[root@python ~]# tar -zxf elasticsearch-6.5.4.tar.gz
[root@python ~]# cd elasticsearch-6.5.4
[root@python elasticsearch-6.5.4]# ./bin/elasticsearch
[2019-01-11T09:25:52,573][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [unknown] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.5.4.jar:6.5.4]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.5.4.jar:6.5.4]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.5.4.jar:6.5.4]
... 6 more

通常我们把此解压目录称作:$ES_HOME,以上错误表示不能以超级用户root启动es,我们新建一个用户即可:

[root@python elasticsearch-6.5.4]# useradd es
[root@python elasticsearch-6.5.4]# passwd es
[root@python ~]# mv elasticsearch-6.5.4 /home/es/
[root@python es]# chown -R es.es elasticsearch-6.5.4/
[root@python elasticsearch-6.5.4]# su - es
[es@python ~]$ echo "export ES_HOME=/home/es/elasticsearch-6.5.4" >> .bashrc
[es@python ~]$ echo "export PATH=$ES_HOME/bin:$PATH" >> .bashrc
[es@python ~]$ elasticsearch
......
[2019-01-11T09:32:31,567][INFO ][o.e.l.LicenseService ] [lejuhty] license [47723c44-43e9-49af-85db-0909d8bb47e3] mode [basic] - valid

至此es已经启动,通过config目录中的elasticsearch.yml文件我们可以修改es的启动端口,默认是9200。

接下来检查下es是否正常启动,除了通过ps -ef|grep elasic之外,我们执行:

[es@python elasticsearch-6.5.4]$ curl 'http://localhost:9200'
{
"name" : "lejuhty",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "qSwz2X0EQU25G85c9H4Q0Q",
"version" : {
"number" : "6.5.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
--可以看到es已经正常运行

以上的es运行方式可以通过ctrl-c或者关闭窗口来关闭,平时我们可以通过守护进程的方式在后台启动es:

./bin/elasticsearch -d -p pid

p表示启动之后es的pid会被记录入一个名为pid的文件中,关闭时只要kill这个文件中记录的pid就可以了。

ES启动后会默认开放2个端口,9200和9300,前者用于REST API或curl等基于http协议的RESTFUL请求,后者多用于集群节点之间的tcp交流。由于ES本身提供的快捷API命令和针对各编程语言的接口全都是RESTFUL风格编写的,因此对于ES的访问几乎只能从9200端口进行,对于9300端口目前还了解不多待看到分布式集群时再解释。

下图中的::1:port表示ipv6的loopback address,添加了::ffff前缀表示ipv4地址的ipv6映射,被称作ipv4-mapped ipv6 address(下图2所示的映射方式),例如::ffff:127.0.0.1:9200表示ipv6中的本地回环地址,相当于ipv4中的127.0.0.1,但是不同于::1:9200此映射的ipv6地址是可以接受ipv4连接请求的。

此外虽然配置文件中默认注释了network.host=127.0.0.1,但ES其实是默认绑定此loopback IP的,因此不修改network.host只能本地连接,但是修改network.host后又必须对系统配置作出修改,原因参见第二部分中系统配置部分的解释。

二、配置Elasticsearch:

关于config目录下各个配置文件的功能及其具体的配置项解释,参考官方页面:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/settings.html

这里先简短的说明一些文件的功用:

  • elasticsearch.yml for configuring Elasticsearch
  • jvm.options for configuring Elasticsearch JVM settings
  • log4j2.properties for configuring Elasticsearch logging

ES的配置可以主要分为两大部分:

1.系统配置部分

这部分比较好理解,ES的良好运行需要进行一些系统配置,其中官网列出的必须要进行的配置包含:

    swap可能会拖慢ES的性能,因此建议关闭swap,关闭swap的各种方式参考链接内容即可。

此配置在windows上无需配置,在Linux上需要修改如下用户limit配置:

es      hard    nofile      65536
es soft nofile 65536

在/etc/sysctl.conf中添加如下记录即可:

vm.max_map_count=262144
    同样的,修改用户limit,确保ulimit -u至少为4096即可。

以上两个系统配置项用到的较少,一个是DNS缓存的问题,只有DNS变动较大时需要设置缓存超时时间。另一个是ES运行所需的JNA文件会被放在/tmp目录的文件夹下,因此/tmp目录如果是额外mount的盘,那么可能需要设置正确的权限才能避免出现找不到shared object的错误。

一般来说如果这些项配置错误,那么只会以warning的形式出现在log中,但是一旦你修改了ES网络相关的参数,例如network.host,那么ES就认为你将要从开发模式转为生产模式,ES会开启一个名为bootstrap checks的检查,日志显示为:“bound or publishing to a non-loopback address, enforcing bootstrap checks”,此时warnings将会以exception形式出现在log中,这些exceptions将会导致ES无法启动,这是ES为了防止你因配置错误导致数据丢失而做的一项预防措施,因此在转向生产时,请务必为ES正确配置系统参数。

这里我再重复一遍,对elasticsearch.yml中network.host的更改,会导致ES认为你将要部署的是生产服务器,此时错误的系统配置将会导致ES启动后自动关闭。

2.ES的配置部分

ES本身的配置主要包含一些诸如PATH,Cluster name等等参数。其中一些必须配置的参数配置方法参见如下链接列表:

    设置logs和data的路径,无需多说。
    默认是elasticsearch,你可以自定义,只有cluster.name相同的节点才能在同一个集群下。
    node.name即节点名,自定义即可,如果每个服务器作为一个集群的一个节点,将其设置为$HOSTNAME即可。
    默认情况下ES绑定的是本地回环IP,因此如果要搭建集群会或外提供服务,可以将此配置修改为对应的IP。
    主要用于集群的投票,这点熟悉其他软件投票规则的都比较熟了,不再多说。

ES默认使用1G的heap,Xms,Xmx都是1g,为保证生产上内存足够,可以适当加大,修改jvm.options文件即可,例如:

-Xms4g
-Xmx4g
    主要用于出现内存泄露时进行memory dump,此目录可以在jvm.options文件中修改:-XX:HeapDumpPath=
    暂时用不到,这个日志默认会开,但是达到2G的上限就会自动关闭了,不关注。

ES的临时文件位置,默认是$ES_TMPDIR,一般$ES_TMPDIR不设置,所以默认其实是/tmp,当然你可以在jvm.options文件中修改-Djava.io.tmpdir项来直接指定位置,最好还是export一个$ES_TMPDIR吧。

此外需要注意的是ES并无内置的安全认证模块,因此安全性暂需要依靠第三方软件或者bind ip+防火墙来实现。

Elasticsearch安装配置的更多相关文章

  1. Elasticsearch笔记(一)—Elasticsearch安装配置

    原文链接:https://my.oschina.net/jhao104/blog/644909 摘要: ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文 ...

  2. Elasticsearch安装配置和测试

    官方教程:https://www.elastic.co/guide/en/elasticsearch/reference/master/_installation.html 中文教程:https:// ...

  3. ElasticSearch 安装配置

    1.   Elasticsearch5.5.2安装 1.1.Elasticsearch安装步骤 #安装之前需安装java 环境,并配置JAVA_HOME环境变量 #直接下载Elasticsearch- ...

  4. ElasticSearch5.5.2:Windows下ElasticSearch安装配置

    环境 1.Windows10企业版X64 2.JDK-1.8 3.ElasticSearch-5.5.2 4.elasticsearch-head插件 5.node-v6.11.2-x64.msi 1 ...

  5. Elasticsearch 安装配置 外网访问 及 后台启动

    本文转自http://www.jianshu.com/p/658961f707d8 作者:咪博士 感谢咪博士分享 Elasticsearch的安装总体来说还是相当简单的,当然中间也会有些小坑.不过大家 ...

  6. Elasticsearch是一个分布式可扩展的实时搜索和分析引擎,elasticsearch安装配置及中文分词

    http://fuxiaopang.gitbooks.io/learnelasticsearch/content/  (中文) 在Elasticsearch中,文档术语一种类型(type),各种各样的 ...

  7. 我的ElasticSearch之ElasticSearch安装配置环境

    最近一段时间比较忙,都很少来园子逛了,刚好,用到了ElasticSearch,感觉还不错,所以就给大家推荐一下,自己也顺便学习:虽然公司选择用ElasticSearch,但是以前都没有用过这个,而且公 ...

  8. elasticsearch 安装配置详解

    一.安装 简单的安装与启动于前文ElasticSearch初探(一)已有讲述,这里不再重复说明. 二.启动 1.自带脚本启动 1)bin/elasticsearch,不太任何参数,默认在前端启动 2) ...

  9. centos7下elasticSearch安装配置

    OS:Centos7x虚拟机 1H2Gjdk:1.8elasticsearch:5.6.0 1.下载“elasticsearch-5.6.0.tar.gz”解压到/usr/local/elastics ...

随机推荐

  1. JSP中的隐含对象

    什么是JSP中隐含对象:容器自动创建,在JSP文件中可以直接使用的对象. 作用:JSP预先创建的这些对象可以简化对HTTP的请求,响应信息的访问. JSP中的隐含对象: 输入输出对象:request. ...

  2. 第一章:Netty介绍

    1. Netty介绍  Netty是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端,Netty是基于NIO实现的,所以整个Netty都是异步操作,网络应用 ...

  3. mysql explain extra理解

    Extra表示附加信息,常见的有如下几种(也按查询效率从高到低排列): Using index 表示使用索引,如果只有 Using index,说明他没有查询到数据表,只用索引表就完成了这个查询,这个 ...

  4. vim折叠快捷键

    参考:http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html 1. 折叠方式 可用选项来设定折叠方式: 可在Vim 配置文件中设置 s ...

  5. Ajax跨域之ContentType为application/json请求失败的问题

    项目里的接口都是用springmvc写的,其中在@requestmapping接口中定义了consumes="application/json",也就是该接口只接受ContentT ...

  6. 使用Spring Session实现Spring Boot水平扩展

    小编说:本文使用Spring Session实现了Spring Boot水平扩展,每个Spring Boot应用与其他水平扩展的Spring Boot一样,都能处理用户请求.如果宕机,Nginx会将请 ...

  7. python 3 中的raw_input 报错

    raw_input() was renamed to input()

  8. tkinter中布局pack、place和grid(八)

    tkinter中布局pack.place和grid pack布局 import tkinter wuya = tkinter.Tk() wuya.title("wuya") wuy ...

  9. java equals和tostring

    Object类概述 是所有类中的父类,最大的超类,所有的类都继承他. equals方法 比较2个对象是否相同,其实他是在比较两个对象的地址是否相同,在equals方法中我们用==来判断 但是比较2个地 ...

  10. BZOJ_1367_[Baltic2004]sequence_结论题+可并堆

    BZOJ_1367_[Baltic2004]sequence_结论题+可并堆 Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 ...