文档地址:

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. CentOS 7安装Python3.6过程(让linux系统共存Python2和Python3环境)

    CentOS 7系统自带了python2,不过可以不用2版本,直接使用python3运行python脚本就可以,但是千万别去动系统自带的python2,因为有程序依赖目前的python2环境,比如yu ...

  2. 聊聊 Spring Boot 2.x 那些事儿

    本文目录: 即将的 Spring 2.0 - Spring 2.0 是什么 - 开发环境和 IDE - 使用 Spring Initializr 快速入门 Starter 组件 - Web:REST ...

  3. HTTP协议(一)

    http协议 协议:是一种规则或者规定 tcp/ip协议:规则了tcp客户端与tcp服务器数据的通讯格式 1.知识点是什么:http协议 2.知识点有什么:规定浏览器与服务器(tcp服务器)之间的数据 ...

  4. idea 15安装步骤2017.6.25

    http://www.jetbrains.com/idea/下载路径 http://www.jb51.net/softjc/549047.html  安装教程 http://www.cnblogs.c ...

  5. Python 的 urllib.parse 库解析 URL

      Python 中的 urllib.parse 模块提供了很多解析和组建 URL 的函数. 解析url urlparse() 函数可以将 URL 解析成 ParseResult 对象.对象中包含了六 ...

  6. reader-write.go

    {         return n, err     }     r.bucket.Wait(int64(n))     return n, err } type writer struct {   ...

  7. bzoj 2186 [Sdoi2008]沙拉公主的困惑 欧拉函数

    n>=m,所以就变成了求 ϕ(m!)∗n!/m! 而 ϕ(m!)=m!∗(p−1)/p...... p为m!的素因子,即为m内的所有素数,问题就转化为了求 n!∗(p−1)/p...... 只需 ...

  8. BZOJ_2038_[2009国家集训队]小Z的袜子(hose)_莫队

    BZOJ_2038_[2009国家集训队]小Z的袜子(hose)_莫队 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无 ...

  9. 使用bat打开多个cmd窗口执行gulp、node

    一.使用场景 使用场景:项目发布前 操作步骤: 1.执行gulp,对文件进行压缩.合并等操作: 2.在1执行完成后,对1中合并的文件如default.css进行多主题色的自动生成,在这里使用node处 ...

  10. Java基础-工厂设计模式(三锅的肥鸡)

    ---恢复内容开始---   1)还没有工厂时代:假如还没有工业革命,如果一个你要一架飞机,一般的做法是自己去建造一架飞机,然后拿来开 通常的结果就是 有些时候 要么专科螺钉 没打好  要么就是 那个 ...