ElasticSearch(二)安装和配置

作者:罗海鹏,叩丁狼教育高级讲师。原创文章,转载请注明出处。

安装使用

       elasticsearch是支持Linux和window系统的,而我当前的系统是Linux,发行版为centos7,我们就在centos7下做elasticsearch的安装和测试,并且后续的环境都是在centos7下学习,所以这里默认大家对Linux有一定的了解,并且熟悉常用的命令,如果大家对Linux不了解的话,欢迎来到叩丁狼学习,或者关注我们的技术文章和公开视频。
安装步骤:
1、下载elasticsearch:
elasticsearch官网上最新的稳定版本是6,2,4,该版本不支持jdk8以下的,所以我们在当前的centos7系统下安装好jdk8
elasticsearch下载地址:http://www.elastic.co/downloads/elasticsearch
我们选择下载的是tar包。包的全名为:elasticsearch-6.2.4.tar.gz

2、安装elasticsearch
把elasticsearch-6.2.4.tar.gz上传到/usr/local目录下并执行解压命令:
$ tar -zxvf elasticsearch-6.2.4.tar.gz
为了方便后续的操作,我们把 elasticsearch-6.2.4改个名字
$ mv elasticsearch-6.2.4 elasticsearch

3、运行elasticsearch
从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动,所以我们要添加一个用户。
创建用户组:
$ groupadd es
创建用户,-e代表把es用户分配到es用户组中,-p代表给es用户设置密码为123456:
$ useradd es -g es -p 123456
修改权限,更改elasticsearch文件夹以及内部文件的所属用户以及组为es,-R表示逐级(N层目录)
$ chown -R es:es /usr/local/elasticsearch
切换为es用户登录
$ su es
进入到elasticsearch安装目录的bin目录下
$ cd /usr/local/elasticsearch/bin
执行运行操作,-d表示后台运行
$ ./elasticsearch -d
查看是否运行成功:
$ curl http://localhost:9200
如果打印以下信息,则代表elasticsearch运行成功

{
  "name" : "p2gU_GO",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "DoHcTzHrSEqNIQVltUG2XA",
  "version" : {
    "number" : "6.2.4",
    "build_hash" : "ccec39f",
    "build_date" : "2018-04-12T20:37:28.497551Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

       至此,我们就把elasticsearch安装到我们主机上了,但是我们现在是在本机上访问elasticsearch服务:localhost:9200,那如果想要外部的主机访问呢?比如我们当前运行这个elasticsearch服务的主机IP是192.168.85.131,然后我用192.168.85.1这台主机去访问192.168.85.131:9200,那是访问不了的,原因是elasticsearch本身的安全机制和系统防火墙等因素限制。那实际上,我们的elasticsearch服务肯定是要给外部主机访问的,那该怎么做呢?接下来我们就来学学elasticsearch的配置。

基础配置

       elasticsearch的主配置文件在config/elasticsearch.yml中,该配置文件包含集群、节点、网络和数据存储等等的重要配置。接下来我们来看看该配置文件中的一些基础的配置属性是代表什么意思,更多的配置我们后续讲到相关的内容再详细介绍。

################################### 集群相关配置 ################################### 
# cluster.name可以确定你的集群名称,当你的elasticsearch集群在同一个网段中elasticsearch会自动的找到具有相同cluster.name的elasticsearch服务. 
# 所以当同一个网段具有多个elasticsearch集群时cluster.name就成为同一个集群的标识.,可以手动指定也可以自动生成
# cluster.name: elasticsearch 

#################################### 节点相关配置 ##################################### 
# 节点名称同理,可自动生成也可手动配置. 
# node.name: node-1

# 允许一个节点是否可以成为一个master节点,es是默认集群中的第一台机器为master,如果这台机器停止就会重新选举master. 
# node.master: true 

# 允许该节点存储数据(默认开启) 
# node.data: true 

# 默认情况下,多个节点可以在同一个安装路径启动,如果你想让你的es只启动一个节点,可以进行如下设置
# node.max_local_storage_nodes: 1 

#################################### 索引相关配置 #################################### 
# 设置索引的分片数,默认为5 
#index.number_of_shards: 5 

# 设置索引的副本数,默认为1: 
#index.number_of_replicas: 1 

# 配置文件中提到的最佳实践是,如果服务器够多,可以将分片提高,尽量将数据平均分布到大集群中去
# 同时,如果增加副本数量可以有效的提高搜索性能 
# 需要注意的是,"number_of_shards" 是索引创建后一次生成的,后续不可更改设置 
# "number_of_replicas" 是可以通过API去实时修改设置的 

#################################### 路径相关配置 #################################### 
# 配置文件存储位置 
# path.conf: /path/to/config 

# 数据存储位置(单个目录设置) 
# path.data: /path/to/data 
# 多个数据存储位置,有利于性能提升 
# path.data: /path/to/data1,/path/to/data2 

# 临时文件的路径 
# path.work: /path/to/work 

# 日志文件的路径 
# path.logs: /path/to/logs 

# 插件安装路径 
# path.plugins: /path/to/plugins 


################################### 内存相关配置 #################################### 
# 当JVM开始写入交换空间时(swapping)ElasticSearch性能会低下,你应该保证它不会写入交换空间 
# 设置这个属性为true来锁定内存,同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过 `ulimit -l unlimited` 命令 
# bootstrap.mlockall: true 
# 确保 ES_MIN_MEM 和 ES_MAX_MEM 环境变量设置为相同的值,以及机器有足够的内存分配给Elasticsearch 
# 注意:内存也不是越大越好,一般64位机器,最大分配内存别才超过32G 

############################## 网络相关配置 ############################### 
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认绑定本机ip
# network.bind_host: 192.168.0.1  

# 设置其它节点和该节点交互的ip地址,如果不设置它会自动设置,值必须是个真实的ip地址 
# network.publish_host: 192.168.0.1 

# 同时设置bind_host和publish_host上面两个参数 
# network.host: 192.168.0.1    #绑定监听IP

# 设置节点间交互的tcp端口,默认是9300 
# transport.tcp.port: 9300 

# 设置是否压缩tcp传输时的数据,默认为false,不压缩
# transport.tcp.compress: true 

# 设置对外服务的http端口,默认为9200 
# http.port: 9200 

# 设置请求内容的最大容量,默认100mb 
# http.max_content_length: 100mb 

# 使用http协议对外提供服务,默认为true,开启 
# http.enabled: false 

       以上就是elasticsearch的基础配置,由于elasticsearch每个版本的config/elasticsearch.ym文件内容都不同,所以可能我以上写的这些配置在大家那里看到又是不一样的。如果某个属性在某个elasticsearch的版本中不存在,那么直接添加这个属性上去测试一下效果,他们的属性大多数都是可以通用的。

取消主机限制

       接下来我们具体来配置一下,让elasticsearch服务能够给外部IP访问:
       首先我们通过刚刚的基础配置发现,网络相关配置中有3个配置项是跟IP有关的:network.bind_host、network.publish_host和network.host,他们的用法分别是:
network.bind_host:
       在默认情况下elasticsearch服务只能本机访问,如果外部主机需要访问该elasticsearch服务,就需要把外部的这台主机的IP配置到该属性中。那如果希望elasticsearch服务不限制所有主机的访问,那么该属性可以设置为0.0.0.0。

network.publish_host:
       在默认情况下elasticsearch的节点不能跨主机交互,如果需要,则在该属性配置elasticsearch节点服务所在的IP。那如果希望elasticsearch服务不限制所有主机的节点交互,那么该属性可以配置为0.0.0.0。

network.host:
       同时设置bind_host和publish_host两个参数,那我们只需要把该属性设置为0.0.0.0,那么就不限制主机的访问和节点的交互

那么我们就来修改elasticsearch的配置文件:
$ vi config/elasticsearch.yml
找到network.host这行配置,把注释解开,值设置为0.0.0.0
$ network.host: 0.0.0.0
退出并保存elasticsearch.yml文件,然后重启elasticsearch服务
关闭elasticsearch服务:
使用强制杀进程的方式关闭elasticsearch
启动elasticsearch服务:
$ ./bin/elasticsearch #注意不要加上-d参数,因为接下来可能会报错,在当前控制台上查看错误信息比较方便
如果启动出现以下错误:

ERROR: bootstrap checks failed
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

则执行以下操作:
切换到root用户
$ su root
修改配置sysctl.conf:
$ vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
退出并保存,然后执行命令:
$ sysctl -p
最后,重新启动elasticsearch,即可启动成功。

       至此,我们已经把elasticsearch的服务取消的主机访问的限制了,但是我们还是不能通过外部的主机访问elasticsearch服务,因为我们系统的防火墙是开启的,我们需要把elasticsearch服务的网络端口放开,这样才能让外界访问。我们通过地址访问elasticsearch服务:http://IP:9200可以知道它的http网络端口为9200,并且我们刚刚学习的配置我们发现,网络相关配置中有个http.port属性,该属性是配置elasticsearch的http端口的,默认端口为9200,所以我们需要把9200端口放开:
$ firewall-cmd --zone=public --add-port=9200/tcp --permanent #--permanent永久生效,没有此参数重启后失效
重新加载防火墙:
$ firewall-cmd --reload
       那么这些准备工作已经完成了,接下来的章节我们就要来具体的进入Elasticsearch的使用了。

WechatIMG9.jpeg
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容