测试环境:centos7.6,jdk1.8,elasticsearch6.6.0

官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/6.6/index.html

elasticsearch需要java8环境的支持,注意先设置好java。

  1. [root@localhost ~]# java -version
  2. openjdk version "1.8.0_191"
  3. OpenJDK Runtime Environment (build 1.8.0_191-b12)
  4. OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

安装elasticsearch

安装目录

cd /usr/local/src

这里安装的是6.6.0版本的,其他版本安装包可自行官网查看

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz

然后提取如下:

tar -xvf elasticsearch-6.6.0.tar.gz

然后它会在当前目录中创建一堆文件和文件夹。然后我们进入bin目录,如下所示:

cd elasticsearch-6.6.0 /bin

启动命令

./elasticsearch

启动之前需要先创建用户和设置权限,由于安全问题elasticsearch不让用root用户直接运行,所以要创建新用户

创建新用户

添加用户组、用户、设置密码(注意密码不能太简单也不行、并且八位以上)

  1. groupadd elastic
  2. useradd elastic -g elastic
  3. passwd elastic

修改用户操作权限

  1. chown -R elastic:elastic /usr/local/src/elasticsearch-6.6.0/

切换用户

  1. su - elastic

由于我是虚拟机运行,导致又报了几个内存不足相关的错误
1、[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决办法:

sudo sysctl -w vm.max_map_count=262144

2、[1]: max file descriptors [65535] for elasticsearch process likely too low, increase to at least [65536]

解决办法:

sudo vi /etc/security/limits.conf

添加如下配置,elastic为用户名

  1. elastic hard nofile 65536
  2. elastic soft nofile 65536

3、OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006ca660000, 4120510464, 0) failed; error=’Cannot allocate memory’ (errno=12)

解决办法:
(1) 修改虚拟机设置 处理器-》每个处理器的核心数量为2(反正比1大就行,自行把握,修改配置需要先关机,然后开机生效)
(2) 修改elasticsearch配置

vi /usr/local/src/elasticsearch-6.6.0/config/jvm.options

  1. -Xms1g
  2. -Xmx1g

修改为刚才配置的数量

  1. -Xms2g
  2. -Xmx2g

启动elasticsearch和后台运行

elasticsearch启动比较缓慢,可以给多分配点内存加快启动速度。

1、直接前台启动,停止ctrl+c就可以了

  1. [elastic@localhost elasticsearch-6.6.0]$ ./bin/elasticsearch

2、后台启动,停止可以使用 kill -9 PID

  1. [elastic@localhost elasticsearch-6.6.0]$ ./bin/elasticsearch -d

启动成功一半会开启两个监听端口,我们可以通过9200端口进行访问

  • 9200 http协议的RESTful接口和外部通讯
  • 9300 tcp通讯端口,集群间和TCPClient都走的它,
  1. [root@localhost ~]# netstat -ntlp
  2. Active Internet connections (only servers)
  3. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  4. tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7105/mysqld
  5. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7110/nginx: master
  6. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6572/sshd
  7. tcp6 0 0 :::6379 :::* LISTEN 7736/docker-proxy
  8. tcp6 0 0 :::9200 :::* LISTEN 10071/java
  9. tcp6 0 0 :::9300 :::* LISTEN 10071/java
  10. tcp6 0 0 :::22 :::* LISTEN 6572/sshd

访问结果一般如下:

  1. [root@localhost ~]# curl 127.0.0.1:9200
  2. {
  3. "name" : "nJliXyp",
  4. "cluster_name" : "elasticsearch",
  5. "cluster_uuid" : "E2Qf0imzSji5ZKzEZYOBbw",
  6. "version" : {
  7. "number" : "6.6.1",
  8. "build_flavor" : "default",
  9. "build_type" : "tar",
  10. "build_hash" : "1fd8f69",
  11. "build_date" : "2019-02-13T17:10:04.160291Z",
  12. "build_snapshot" : false,
  13. "lucene_version" : "7.6.0",
  14. "minimum_wire_compatibility_version" : "5.6.0",
  15. "minimum_index_compatibility_version" : "5.0.0"
  16. },
  17. "tagline" : "You Know, for Search"
  18. }

但是端口显示的只可以本地访问,下面介绍如何开启远程访问。

配置远程访问

由于安全问题elasticsearch之允许本机访问,我们需要修改elasticsearch的配置文件

vim /usr/local/src/elasticsearch-6.6.0/config/elasticsearch.yml

去掉network.host的注释,并修改为

network.host: 0.0.0.0

开发环境可以这样设置,用于生产环境可以修改为固定的ip或者本机访问。

然后在外部就可以通过 ip:9200 访问了,显示内容如上一致。


mysql和elasticsearch数据同步请参见:《elasticsearch从mysql同步数据之logstash的安装和使用》