当前位置:首页 > 生活常识 > 正文

es5.4.0

摘要: es5.4.0最佳答案53678位专家为你答疑解惑es5.4.0-CentOS-6.5-x86_64安装文档1.环境说明本示例安...

es5.4.0

最佳答案 53678位专家为你答疑解惑

es5.4.0-CentOS-6.5-x86_64安装文档

1.环境说明

本示例安装环境如下:

系统:CentOS-6.5-x86_64

主机ip:192.168.1.237

安装根目录:/opt/es/

Jdk:要求jdk8及以上版本,本示例为:jdk1.8.0_131

2.下载安装包并拷贝到centos上

下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.zip

路径:/opt/es/elasticsearch-5.4.0

3.创建es用户

es不能运行在root用户下,需要创建单独的用户

useradd es

chown -R es:es /opt/es/elasticsearch-5.4.0/

bin目录下的文件分配可执行权限

cd /opt/es/elasticsearch-5.4.0/bin/

chmod ?777 elasticsearch*

4.设置系统参数1)vi /etc/security/limits.conf

添加如下内容

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

2)vi /etc/security/limits.d/90-nproc.conf

修改如下内容:

* soft nproc 1024

#修改为

* soft nproc 2048

3)vi /etc/sysctl.conf

添加下面配置:

vm.max_map_count=655360

并执行命令:

sysctl -p

5.修改配置文件

cluster.name: es-test

node.name: node-1

node.master: true

node.data: true

#启动异常:ERROR: bootstrap checks failed,因为Centos6不支持SecComp,而默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。

bootstrap.system_call_filter: false

network.host: 0.0.0.0

discovery.zen.ping.unicast.hosts: ["192.168.1.237:9300"]

# 增加新的参数,这样head插件可以访问es

http.cors.enabled: true

http.cors.allow-origin: "*"

6.启动es,检查是否成功

cd /opt/es/elasticsearch-5.4.0

./bin/elasticsearch

http://192.168.1.237:9200/检查是否安装成功

如果不能连接,检查防火墙和iptables

关闭防火墙

setenforce 0

设置iptables,开放9200端口

vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT

service iptables restart

[ES]在linux(CentOS7.2 64bit)上安装elasticSearch 6.0.0

作者:choxsu来源:https://choxsu.cn/article/50

01 准备工作及下载

1)创建一个es专门的用户(必须),因为es不能用root用户启动

useradd es -mpasswd <input es>mkdir -p /usr/local/es/chown -R es /usr/local/es/

2)切换到es用户下,下载安装包

su escd /usr/local/eswget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.zipunzip elasticsearch-6.0.0.zipcd elasticsearch-6.0.0/lsbin config data lib LICENSE.txt logs modules nohup.out NOTICE.txt plugins README.textile

3)修改配置文件

cd config/vim elasticsearch.ymlcluster.name: choxsu-es#path.data: /path/to/data # 默认即可#path.logs: /path/to/logs # 默认即可network.host: 0.0.0.0http.port: 9200

4)修改jvm内存大小

vim config/jvm.options-Xms256m-Xmx256m

02 解决启动时报错

1) 启动命令

这里注意啦,这里是后台启动,要发现错误的话,去logs目录下查看。

nohup ./bin/elasticsearch &

2)查看错误信息

注意:ElasticSearch6.0.0必须jdk1.8以上支持;所以请记得在/etc/profile文件中配置jdk环境变量

export JAVA_HOME=/opt/java/jdk1.8.0_161export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$PATH

直接查看nohup输出信息

tail -f nohup.out

或者查看日志输出查看错误信息

tail -f logs/choxsu-es.log

核心错误信息

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536][2]: max number of threads [1024] for user [es] is too low, increase to at least [4096][3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144][4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

3)解决办法

1)max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]原因:无法创建本地文件问题,用户最大可创建文件数太小解决方案:切换到root用户,编辑limits.conf配置文件, 添加类似如下内容:vi /etc/security/limits.conf添加如下内容:* soft nofile 65536* hard nofile 131072* soft nproc 2048* hard nproc 4096备注:* 代表Linux所有用户名称(比如 hadoop)需要保存、退出、重新登录才可生效。2)max number of threads [1024] for user [es] likely too low, increase to at least [4096]原因:无法创建本地线程问题,用户最大可创建线程数太小解决方案:切换到root用户,进入limits.d目录下,修改90-nproc.conf 配置文件。vi /etc/security/limits.d/90-nproc.conf找到如下内容:* soft nproc 1024#修改为* soft nproc 40963)max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]原因:最大虚拟内存太小root用户执行命令:[root@localhost ~]# sysctl -w vm.max_map_count=2621444)system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk原因:Centos6不支持SecComp,而ES5.4.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。详见 :https://github.com/elastic/elasticsearch/issues/22899解决方法:在elasticsearch.yml中新增配置bootstrap.system_call_filter,设为false,注意要在Memory下面:bootstrap.memory_lock: falsebootstrap.system_call_filter: false以上问题解决后,es启动成功了,但又遇到了新的问题,本地机器无法访问虚拟机的服务,两个原因:1)9200被限制为本机访问,需要在es的配置文件elasticsearch.yml中新增配置: network.bind_host:0.0.0.02)关闭虚拟机防火墙解决了这个两个问题后,本地能够顺利访问虚拟机的ES服务了。

注意,以上虚拟内存的更改,每次重启系统之后都要重新设置

ysctl -w vm.max_map_count=262144

4)解决完了之后,再次启动服务(先杀后启)

ps -ef|grep elasticsearch|grep bootstrap |awk '{print $2}' |xargs kill -9nohup ./bin/elasticsearch &

03 访问es

1)使用curl测试,因为使用的是云服务器部署

curl http://localhost:9200/?pretty

得到的内容

{ "name" : "Nd1M7rH", "cluster_name" : "choxsu-es", "cluster_uuid" : "593zK7LuTZOvfcdgt09ZXQ", "version" : { "number" : "6.0.0", "build_hash" : "8f0685b", "build_date" : "2017-11-10T18:41:22.859Z", "build_snapshot" : false, "lucene_version" : "7.0.1", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search"}

04 使用原生方式创建索引

使用 Xput创建索引

curl -XPUT 'http://localhost:9200/twitter/doc/1?pretty' -H 'Content-Type: application/json' -d '{ "user": "kimchy", "post_date": "2009-11-15T13:12:00", "message": "Trying out Elasticsearch, so far so good?"}'curl -XPUT 'http://localhost:9200/twitter/doc/2?pretty' -H 'Content-Type: application/json' -d '{ "user": "kimchy", "post_date": "2009-11-15T13:12:00", "message": "Trying out Elasticsearch, so far so good?"}'curl -XPUT 'http://localhost:9200/twitter/doc/3?pretty' -H 'Content-Type: application/json' -d '{ "user": "kimchy", "post_date": "2009-11-15T13:12:00", "message": "Trying out Elasticsearch, so far so good?"}'

查询数据

curl -XGET 'http://localhost:9200/twitter/doc/1?pretty=true'curl -XGET 'http://localhost:9200/twitter/doc/2?pretty=true'curl -XGET 'http://localhost:9200/twitter/doc/3?pretty=true'

搜索数据

通过字进行查询:q=user:kimchy

curl -XGET 'http://localhost:9200/twitter/_search?q=user:kimchy&pretty=true'curl -XGET 'http://localhost:9200/twitter/_search?q=user:kimchy&pretty=true'

通过JSON的方式进行查询

curl -XGET 'http://localhost:9200/twitter/_search?pretty=true' -H 'Content-Type: application/json' -d '{ "query" : { "match_all" : {} }}'

通过JSON的方式查询,查询的时候指定区间

curl -XGET 'http://localhost:9200/twitter/_search?pretty=true' -H 'Content-Type: application/json' -d '{ "query" : { "range" : { "post_date" : { "from" : "2009-11-15T13:00:00", "to" : "2009-11-15T14:00:00" } } }}'

那教程就到这里,欢迎大家的查看阅读

有疑问请随时留言互动

发表评论