您现在的位置是:首页 > 博客日记 > Search搜索 Search搜索

ElasticSearch的安装

2018-08-15 07:41:02 【Search搜索】 人已围观

ElasticSearch 是一款优秀的搜索引擎,用java编写,restful接口的方式进行对接。

官网

elastic官方网站

Elastic有一条完整的产品线:Elasticsearch、Kibana、Logstash等,前面说的三个就是大家常说的ELK技术栈。

1.安装java环境

java环境的安装

ElasticSearch 6.1安装

  1. cd /tools
  2. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.3.zip
  3. unzip elasticsearch-6.1.3.zip
  4. mv ./elasticsearch-6.1.3 /usr/local/elasticsearch

2.1安装ElasticSearch 7.3.1安装

es下载页

  1. cd /tools
  2. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz
  3. tar -zxvf elasticsearch-7.3.2-linux-x86_64.tar.gz
  4. mv ./elasticsearch-7.3.2 /usr/local/elasticsearch

目录结构介绍:

  1. bin:可执行文件,运行es的命令
  2. config:配置文件目录
  3. config/elasticsearch.ymlES启动基础配置
  4. config/jvm.optionsES启动时JVM配置
  5. config/log4j2.propertiesES日志输出配置文件
  6. lib:依赖的jar
  7. logs:日志文件夹
  8. moduleses模块
  9. plugins:可以自己开发的插件
  10. data:我们自己创建的,存放es存储文件

设置es权限(elk是elatic的简称)

  1. cd /usr/local
  2. # 添加elk分组
  3. groupadd elk
  4. # 在elk分组下添加elk用户
  5. useradd -g elk elk
  6. # 赋权给/usr/local/elasticsearch
  7. chown elk:elk -R /usr/local/elasticsearch

安装成功

启动
  1. #切换为elk用户
  2. su elk
  3. #启动 后面加 -d 为后台启动
  4. /usr/local/elasticsearch/bin/elasticsearch

一定要注意,elasticSearch不能用root账户启动,elasticSearch不能用root账户启动,elasticSearch不能用root账户启动,重要的说三遍,我这里用的是我新建的elasticsearch账户开机启动

报错1:

  1. bash-4.2$ ./elasticsearch -d
  2. future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk/jdk1.8.0_201/jre] does not meet this requirement
  3. Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]
  4. output:
  5. #
  6. # There is insufficient memory for the Java Runtime Environment to continue.
  7. # Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory.
  8. # An error report file with more information is saved as:
  9. # logs/hs_err_pid1395.log
  10. error:
  11. Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12)
  12. at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:111)
  13. at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:79)
  14. at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:57)
  15. at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:89)

解决方案:调小启动内存

  1. vi /usr/local/elasticsearch/config/jvm.options
  • 修改22行

    1. #-Xms2g
    2. #-Xmx2g
    3. -Xms256m
    4. -Xmx256m

    1、切换到root用户修改配置sysctl.conf

    1. vi /etc/sysctl.conf

    添加下面配置:

    1. vm.max_map_count=655360

    并执行命令:

    1. sysctl -p

    然后,重新启动elasticsearch,即可启动成功。
    上面设置的分配的内存的最大值为256MB和最小值64mb,您可以根据自己的机器情况设置内存大小。

重新启动即可/usr/local/elasticsearch/bin/elasticsearch

  1. [root@master local]# curl http://127.0.0.1:9200
  2. {
  3. "name" : "master",
  4. "cluster_name" : "elasticsearch",
  5. "cluster_uuid" : "j-_k3fJLTtq49qNso0bAcw",
  6. "version" : {
  7. "number" : "7.3.2",
  8. "build_flavor" : "default",
  9. "build_type" : "tar",
  10. "build_hash" : "1c1faf1",
  11. "build_date" : "2019-09-06T14:40:30.409026Z",
  12. "build_snapshot" : false,
  13. "lucene_version" : "8.1.0",
  14. "minimum_wire_compatibility_version" : "6.8.0",
  15. "minimum_index_compatibility_version" : "6.0.0-beta1"
  16. },
  17. "tagline" : "You Know, for Search"
  18. }

启动成功!

后台启动:

  1. /usr/local/elasticsearch/bin/elasticsearch -d

2.2 设置开机启动: 我是本地,直接把iptables 关掉了

  1. vim /etc/rc.d/rc.local
  2. service iptables stop
  3. su elk -c "/usr/local/elasticsearch/bin/elasticsearch -d"

2.3 配置

  1. vim /usr/local/elasticsearch/config/elasticsearch.yml

修改如下:

  1. cluster.name: application-1
  2. node.name: node-1
  3. network.host: 192.168.0.210

其中cluster.name 是集群名称,这个不要使用默认的,要修改,去掉注释,如果有多个机器,加入同一个集群,那么这个值必须一样

noide.name 是集群里面每个节点的值,也就是当前机器的节点的值,这个值,每个节点要不一样。

  1. network host 改成当前的内网ip

下面的部分是elasticsearch 2 部分的插件,在es6中已经不可用,

es6的可视化GUI,请查看:http://www.fecshop.com/topic/668

记录一下问题(设置network host :0.0.0.0,用于外网访问)一直都报这个错误:

  1. [2019-09-19T11:59:58,586][DEBUG][o.e.a.ActionModule ] [node-1] Using REST wrapper from plugin org.elasticsearch.xpack.security.Security
  2. [2019-09-19T11:59:59,408][INFO ][o.e.d.DiscoveryModule ] [node-1] using discovery type [zen] and seed hosts providers [settings]
  3. [2019-09-19T12:00:01,501][INFO ][o.e.n.Node ] [node-1] initialized
  4. [2019-09-19T12:00:01,501][INFO ][o.e.n.Node ] [node-1] starting ...
  5. [2019-09-19T12:00:01,852][INFO ][o.e.t.TransportService ] [node-1] publish_address {172.31.64.25:9300}, bound_addresses {0.0.0.0:9300}
  6. [2019-09-19T12:00:01,864][INFO ][o.e.b.BootstrapChecks ] [node-1] bound or publishing to a non-loopback address, enforcing bootstrap checks
  7. ERROR: [1] bootstrap checks failed
  8. [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
  9. [2019-09-19T12:00:01,984][INFO ][o.e.n.Node ] [node-1] stopping ...
  10. [2019-09-19T12:00:02,269][INFO ][o.e.n.Node ] [node-1] stopped
  11. [2019-09-19T12:00:02,269][INFO ][o.e.n.Node ] [node-1] closing ...
  12. [2019-09-19T12:00:02,287][INFO ][o.e.n.Node ] [node-1] closed

解决方案: 修改/usr/local/elasticsearch/config/elasticsearch.yml配置文件

修改72行

  1. #cluster.initial_master_nodes: ["node-1", "node-2"]
  2. cluster.initial_master_nodes: ["node-1"]

2.4 查看:

  1. http://自己ip:9200/

2.5 集群设置

如果想要建立一个elasticSearch集群,可以按照下面的步骤,非常的简单,首先,想说明的是:对于elasticSearch,他隐藏了分布式的复杂性,分片和复制集,都是他自动完成,你只需要配置好ip就可以了,下面是配置的步骤:

我有两台机器 192.169.0.210 192.168.0.199

我的两台机器都按照上面的步骤配置完成,下面配置集群

首先是192.168.0.210

  1. vim /usr/local/elasticsearch/config/elasticsearch.yml

找到行 , 修改如下:

  1. discovery.zen.ping.unicast.hosts: ["192.168.0.199"]

上面的ip就是其他的节点的ip,如果我有5台机器,那么,这里需要把其他四台机器的ip写上。

同理,对于其他的节点,需要把其他的节点协商,用逗号隔开

elasticSearch会找到对应的节点,自动分片和做复制集。

2.6 安装ik插件(中文分词使用)


报错原因
我使用的Elasticsearch是6.2.2版本,按照学校文档创建字段时,使用了

  1. {"type":"string","index":"not_analyzed"}。

原因分析
检查拼写无误之后,我决定去查Elasticsearch新版本特性,因为之前也踩过head插件的安装方法的坑,就是因为版本问题。
果不其然,Elasticsearch从5.X就引入了text和keyword,其中keyword适用于不分词字段,搜索时只能完全匹配,这时string还保留着。
到了6.X就彻底移除string了。
另外,”index”的值只能是boolean变量了。

解决方法

  1. {"type":"text","index":false}


关注TinyMeng博客,更多精彩分享,敬请期待!
 

很赞哦! ()

上一篇:php中简单使用solr

下一篇:solr的安装