伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

全文搜索引擎 Elasticsearch 集群搭建入门教程

来源:本站原创 浏览:122次 时间:2022-03-10

介绍

ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。基百科、Stack Overflow、Github 都采用它。

本文从零开始,讲解如何使用 Elasticsearch 搭建自己的全文搜索引擎。每一步都有详细的说明,大家跟着做就能学会。

环境

1、VMware

2、Centos 6.6

3、Elasticsearch 5.5.2

4、JDK 1.8

���ٲ�ʢ,���ٸ�ǿ

VMware 安装以及在 VMware 中安装 Centos 这个就不说了,环境配置直接默认就好,不过分配给机器的内存最好设置大点(建议 2G),

使用 dhclient 命令来自动获取 IP 地址,查看获取的 IP 地址则使用命令 ip addr 或者 ifconfig ,则会看到网卡信息和 lo 卡信息。

给虚拟机额中的 linux 设置固定的 ip(因为后面发现每次机器重启后又要重新使用 dhclient 命令来自动获取 IP 地址)

1vim  /etc/sysconfig/network-scripts/ifcfg-eth0

修改:

1onboot=yes
2bootproto=static

增加:(下面可设置可不设置)

1IPADDR=192.168.1.113            网卡IP地址
2GATEWAY=192.168.1.1
3NETMASK=255.255.255.0

设置好之后,把网络服务重启一下, service network restart

修改 ip 地址参考: http://jingyan.baidu.com/article/e4d08ffdd417660fd3f60d70.html

关注我

大环境都准备好了,下面开始安装步骤:

安装 JDK 1.8

先卸载自带的 openjdk,查找 openjdk

1rpm -qa | grep java

卸载 openjdk

1yum -y remove  java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el65.x8664
2yum -y remove java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64

解压 JDK 安装包:

附上jdk1.8的下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

解压完成后配置一下环境变量就 ok

1、在/usr/local/下创建Java文件夹

1cd /usr/local/                                    进入目录
2mkdir java                                     新建java目录

2、文件夹创建完毕,把安装包拷贝到 Java 目录中,然后解压 jdk 到当前目录

1cp /usr/jdk-8u144-linux-x64.tar.gz /usr/local/java/    **注意匹配你自己的文件名**  拷贝到java目录
2tar -zxvf jdk-8u144-linux-x64.tar.gz       解压到当前目录(Java目录)

3、解压完之后,Java目录中会出现一个jdk1.8.0_144的目录,这就解压完成了。之后配置一下环境变量。
编辑/etc/下的profile文件,配置环境变量

1vi /etc/profile                  

进入profile文件的编辑模式

在最后边追加一下内容(配置的时候一定要根据自己的目录情况而定哦!)

1 JAVA_HOME=/usr/local/java/jdk1.8.0_144
2 CLASSPATH=$JAVA_HOME/lib/
3 PATH=$PATH:$JAVA_HOME/bin
4 export PATH JAVA_HOME CLASSPATH

之后保存并退出文件之后。

让文件生效:

1source /etc/profile

在控制台输入Java 和 Java -version 看有没有信息输出,如下: java -version

1java version "1.8.0_144"
2 Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
3 Java HotSpot(TM) Client VM (build 25.60-b23, mixed mode)

能显示以上信息,就说明 JDK 安装成功啦

安装 Maven

因为后面可能会用到 maven ,先装上这个。

1、下载 maven

1wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.tar.gz

2、解压至 /usr/local 目录

1tar -zxvf apache-maven-3.2.5-bin.tar.gz

3、配置公司给的配置

替换成公司给的 setting.xml 文件,修改关于本地仓库的位置, 默认位置:${user.home}/.m2/repository

4、配置环境变量etc/profile 最后添加以下两行

1export MAVEN_HOME=/usr/local/apache-maven-3.2.5
2export PATH=${PATH}:${MAVEN_HOME}/bin

5、测试

1[root@localhost ~]# mvn -v
2Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T09:29:23-08:00)
3Maven home: /usr/local/apache-maven-3.2.5

VMware 虚拟机里面的三台机器 IP 分别是:

1192.168.153.133
2192.168.153.134
3192.168.153.132
配置 hosts

在 /etc/hosts下面编写:ip node 节点的名字(域名解析)

1vim  /etc/hosts

新增:

1192.168.153.133  es1
2192.168.153.134  es2
3192.168.153.132  es3
设置 SSH 免密码登录

安装expect命令 : yum -y install expect

将 ssh_p2p.jar 随便解压到任何目录下: (这个 jar 包可以去网上下载)

1unzip ssh_p2p.zip

修改 resource 的 ip 值

1vim /ssh_p2p/deploy_data/resource  (各个节点和账户名,密码,free代表相互都可以无密码登陆)
1#设置为你每台虚拟机的ip地址,用户名,密码
2address=(
3"192.168.153.133,root,123456,free"
4"192.168.153,134,root,123456,free"
5"192.168.153.132,root,123456,free"
6)

修改 start.sh 的运行权限

1chmod u+x start.sh

运行

1./start.sh

测试:

ssh ip地址 (测试是否可以登录)

安装 ElasticSearch

下载地址: https://www.elastic.co/downloads/elasticsearch

1wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz
2cd /usr/local
3tar -zxvf   elasticsearch-5.5.2.tar.gz

su tzs 切换到 tzs 用户下 ( 默认不支持 root 用户)

sh /usr/local/elasticsearch/bin/elasticsearch -d 其中 -d 表示后台启动

在 vmware 上测试是否成功:curl http://localhost:9200/

test

出现如上图这样的效果,就代表已经装好了。

elasticsearch 默认 restful-api 的端口是 9200 不支持 IP 地址,也就是说无法从主机访问虚拟机中的服务,只能在本机用 http://localhost:9200 来访问。如果需要改变,需要修改配置文件 /usr/local/elasticsearch/config/elasticsearch.yml 文件,加入以下两行:

1network.bind_host: 0.0.0.0
2network.publish_host: _nonloopback:ipv4

或去除 network.host 和 http.port 之前的注释,并将 network.host 的 IP 地址修改为本机外网 IP。然后重启,Elasticsearch

关闭方法(输入命令:ps -ef | grep elasticsearch ,找到进程,然后 kill 掉就行了。

如果外网还是不能访问,则有可能是防火墙设置导致的 ( 关闭防火墙:service iptables stop )

修改配置文件:

1vim config/elasticsearch.yml 

修改 :

1cluster.name : my-app  (集群的名字,名字相同的就是一个集群)
2
3node.name : es1  (节点的名字, 和前面配置的 hosts 中的 name 要一致)
4
5path.data: /data/elasticsearch/data  (数据的路径。没有要创建(`mkdir -p /data/elasticsearch/{data,logs}`),并且给执行用户权限 `chown tzs /data/elasticsearch/{data,logs} -R ` )
6path.logs: /data/elasticsearch/logs    (数据 log 信息的路径,同上)
7network.host: 0.0.0.0    //允许外网访问,也可以是自己的ip地址
8http.port: 9200        //访问的端口
9discovery.zen.ping.unicast.hosts: ["192.168.153.133", "192.168.153.134", "192.168.153.132"]   //各个节点的ip地址

记得需要添加上:(这个是安装 head 插件要用的, 目前不需要)

1http.cors.enabled: true
2http.cors.allow-origin: "*"

最后在外部浏览器的效果如下图:

安装 IK 中文分词

可以自己下载源码使用 maven 编译,当然如果怕麻烦可以直接下载编译好的

https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v5.5.2

注意下载对应的版本放在 plugins 目录下

解压

1unzip elasticsearch-analysis-ik-5.5.2.zip

在 es 的 plugins 下新建 ik 目录

1mkdir ik

将刚才解压的复制到ik目录下

1cp -r elasticsearch/* ik

删除刚才解压后的

1rm -rf elasticsearch
2rm -rf elasticsearch-analysis-ik-5.5.2.zip
IK 带有两个分词器

ik_max_word :会将文本做最细粒度的拆分;尽可能多的拆分出词语

ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有

安装完 IK 中文分词器后(当然不止这种中文分词器,还有其他的,可以参考我的文章 Elasticsearch 默认分词器和中分分词器之间的比较及使用方法),测试区别如下:

ik_max_word

执行:

1curl -XGET 'http://192.168.153.134:9200/_analyze?pretty&analyzer=ik_max_word' -d '联想是全球最大的笔记本厂商'

结果:

 1{
2  "tokens" : [
3    {
4      "token" : "联想",
5      "start_offset" : 0,
6      "end_offset" : 2,
7      "type" : "CN_WORD",
8      "position" : 0
9    },
10    {
11      "token" : "是",
12      "start_offset" : 2,
13      "end_offset" : 3,
14      "type" : "CN_CHAR",
15      "position" : 1
16    },
17    {
18      "token" : "全球",
19      "start_offset" : 3,
20      "end_offset" : 5,
21      "type" : "CN_WORD",
22      "position" : 2
23    },
24    {
25      "token" : "最大",
26      "start_offset" : 5,
27      "end_offset" : 7,
28      "type" : "CN_WORD",
29      "position" : 3
30    },
31    {
32      "token" : "的",
33      "start_offset" : 7,
34      "end_offset" : 8,
35      "type" : "CN_CHAR",
36      "position" : 4
37    },
38    {
39      "token" : "笔记本",
40      "start_offset" : 8,
41      "end_offset" : 11,
42      "type" : "CN_WORD",
43      "position" : 5
44    },
45    {
46      "token" : "笔记",
47      "start_offset" : 8,
48      "end_offset" : 10,
49      "type" : "CN_WORD",
50      "position" : 6
51    },
52    {
53      "token" : "本厂",
54      "start_offset" : 10,
55      "end_offset" : 12,
56      "type" : "CN_WORD",
57      "position" : 7
58    },
59    {
60      "token" : "厂商",
61      "start_offset" : 11,
62      "end_offset" : 13,
63      "type" : "CN_WORD",
64      "position" : 8
65    }
66  ]
67}
ik_smart

执行:

1curl -XGET 'http://localhost:9200/_analyze?pretty&analyzer=ik_smart' -d '联想是全球最大的笔记本厂商'

结果:

 1{
2  "tokens" : [
3    {
4      "token" : "联想",
5      "start_offset" : 0,
6      "end_offset" : 2,
7      "type" : "CN_WORD",
8      "position" : 0
9    },
10    {
11      "token" : "是",
12      "start_offset" : 2,
13      "end_offset" : 3,
14      "type" : "CN_CHAR",
15      "position" : 1
16    },
17    {
18      "token" : "全球",
19      "start_offset" : 3,
20      "end_offset" : 5,
21      "type" : "CN_WORD",
22      "position" : 2
23    },
24    {
25      "token" : "最大",
26      "start_offset" : 5,
27      "end_offset" : 7,
28      "type" : "CN_WORD",
29      "position" : 3
30    },
31    {
32      "token" : "的",
33      "start_offset" : 7,
34      "end_offset" : 8,
35      "type" : "CN_CHAR",
36      "position" : 4
37    },
38    {
39      "token" : "笔记本",
40      "start_offset" : 8,
41      "end_offset" : 11,
42      "type" : "CN_WORD",
43      "position" : 5
44    },
45    {
46      "token" : "厂商",
47      "start_offset" : 11,
48      "end_offset" : 13,
49      "type" : "CN_WORD",
50      "position" : 6
51    }
52  ]
53}
安装 head 插件

elasticsearch-head 是一个 elasticsearch 的集群管理工具,它是完全由 html5 编写的独立网页程序,你可以通过插件把它集成到 es。

安装 git
1yum remove git
2yum install git
3git clone git://github.com/mobz/elasticsearch-head.git   拉取 head 插件到本地,或者直接在 GitHub 下载 压缩包下来
安装nodejs

先去官网下载 node-v8.4.0-linux-x64.tar.xz

1tar -Jxv -f  node-v8.4.0-linux-x64.tar.xz
2mv node-v8.4.0-linux-x64  node

环境变量设置:

1vim  /etc/profile

新增:

1export NODE_HOME=/opt/node
2export PATH=$PATH:$NODE_HOME/bin
3export NODE_PATH=$NODE_HOME/lib/node_modules

使配置文件生效(这步很重要,自己要多注意这步)

1source /etc/profile

测试是否全局可用了:

1node -v

然后

1mv elasticsearch-head head
2cd head/
3npm install -g grunt-cli
4npm install
5grunt server

再 es 的配置文件中加:

1http.cors.enabled: true
2http.cors.allow-origin: "*"

在浏览器打开 http://192.168.153.133:9100/ 就可以看到效果了,

遇到问题

把坑都走了一遍,防止以后再次入坑,特此记录下来

1、ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

改变 elasticsearch 文件夹所有者到当前用户

1sudo chown -R noroot:noroot elasticsearch

这是因为 elasticsearch 需要读写配置文件,我们需要给予 config 文件夹权限,上面新建了 elsearch 用户,elsearch 用户不具备读写权限,因此还是会报错,解决方法是切换到管理员账户,赋予权限即可:

1sudo -i
2
3chmod -R 775 config

2、[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

原因是elasticsearch默认是不支持用root用户来启动的。

解决方案一:

1Des.insecure.allow.root=true

修改 /usr/local/elasticsearch-2.4.0/bin/elasticsearch

添加

1ES_JAVA_OPTS="-Des.insecure.allow.root=true"

或执行时添加:


                	
  • 上一篇: 弃繁就简!一行代码搞定 Python 日志!
  • 下一篇: 坚果云和亿方云哪个更适合学校?
  •   推荐站点

    • At-lib分类目录At-lib分类目录

      At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

      www.at-lib.cn
    • 中国链接目录中国链接目录

      中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

      www.cnlink.org
    • 35目录网35目录网

      35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

      www.35mulu.com
    • 就要爱网站目录就要爱网站目录

      就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

      www.912219.com
    • 伍佰目录伍佰目录

      伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

      www.wbwb.net