分布式搜索和分析引擎-Elasticsearch(安装和配置记录篇)

       首先,我啰嗦几句,毕竟在这里能够顺便插条广告:我的第一篇博客文章即将在“开源中国”诞生!我为自己鼓掌!(因为这个世界缺少掌声,所以我们必须学会为自己鼓掌)

       Elasticsearch,我接触了好几天,对网络上的很多杂牌文档不敢苟同。一篇有实际价值的文档,正如我的同事所说的一样,模仿一次、测试一次、在测试一次,如若能够顺利通过,则最后写出的文档才是一篇百分百值得信赖的文档。当然,不排除每个人的情况不同而差生的意外事件,就好像我每次根据网络文档去试验都能“成功”遇到很多大大小小的错误一样。但是,我不会气馁,因为换一个角度来说,这是上天赐予我的机会——让我在挫折中成长,以后就不会在遇到问题出现的时候措手不及了,因为我正年轻!

       追根到底,网络上的文档不全面的原因还是因为以下几点:

                    第一、大多数人都喜欢复制黏贴或是直接转载变为自己的“作品”(这点是国内IT技术前进缓慢的障碍之一);

                    第二、得到网络上的“标准"文档后,“模仿”一遍后顺利呈现想要的效果,并且从未有机会走上满是”荆棘“的道路(这种在温室里成长的花骨朵一旦暴露在室外,可以想象到后果);

                    第三、国内的IT技术行业起步慢,国外的大牛精辟指导又不那么的”容易“传播到我们的国内(这个原因估计很多IT爱好者都很清楚,近几年有道墙筑起来之后我们就得花上更多的钱去翻墙了,别问我是什么或为什么,长这么大,我爸妈从没告诉过我)

       ================== 你↑我↓,骑着猪的公主 ==================

           (有种运动的完美全程是这样划分的:第一个阶段美之曰”前戏“,第二个阶段谓其为”过程“,第三个阶段美之曰”高潮“。在这里,我的博客文章就用这三个阶段来向大家展示成果)

 

前戏:

        系统:Linux (本本章环境是Debian7)

        

过程:        

安装JAVA去支持ES :

1.解压:

tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/lib/jvm/

 

2.下面配置环境变量,使用vim /etc/profile命令编辑,在底部加入以下命令:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

 

3.使用source执行配置文件中的命令:

source /etc/profile

 

注:Elasticsearch安装至少需要Java 7的支持。如需了解Java的情况,可以到oracle的官网找相关的资料。所以,请在我们安装Elasticsearch前,请检查我们的Java版本运行:

java -version

 

 

安装elasticsearch :

下载页=>    官网:http://www.elasticsearch.com/ 

 

1.解压:

tar zxf elasticsearch-2.3.3.tar.gz -C /usr/local/

 

2.保证非ROOT用户对elasticsearch目录拥有修改的权限:chown -R situtao elasticsearch-2.3.3/

 

3.后台运行启动ES:bin/elasticsearch -d

 

注:默认情况下,Elasticsearch使用9200端口提供的REST API。该端口是可配置的。

 

4.检测:

在本机访问 curl 127.0.0.1:9200

{

  "name" : "Vashti",        //节点名是随机生成的,可自定义

  "cluster_name" : "elasticsearch",

  "version" : {

    "number" : "2.3.3",

    "build_hash" : "218bdf10790eef486ff2c41a3df5cfa32dadcfde",

    "build_timestamp" : "2016-05-17T15:40:04Z",

    "build_snapshot" : false,

    "lucene_version" : "5.5.0"

  },

  "tagline" : "You Know, for Search"

}

 

高潮:

配置篇:

ElasticSearch的基本配置(这部分配置可以不理会,取默认值)

编辑文件${ESROOTPATH}/config/elasticsearch.yml

cluster.name:集群名称,es可以自我发现,拥有相同集群名字的ES会构成集群

node.name:节点名称,当前节点的名字,唯一性

node.master:是否允许当前节点成为master          //设置为true,则能在master宕掉后使从节点自动参与选举

node.data:是否允许当前节点存储数据

index.number_of_shards:一个索引默认的shard数量    //自定义增加配置,默认是5个主分片

ndex.number_of_replicas:一个索引默认的副本数量     //自定义增加配置,默认是1个副分片

path.data:数据存储位置

path.logs :日志存储位置

bootstrap.mlockall:是否只使用内存(不使用swap)

 

PS:避免脑裂现象,用到的一个参数是:discovery.zen.minimum_master_nodes。这个参数决定了要选举一个Master需要多少个节点(最少候选节点数)。默认值是3。根据一般经验这个一般设置成 N/2 + 1,N是集群中节点的数量,例如一个有3个节点的集群,minimum_master_nodes 应该被设置成 3/2 + 1 = 2(向下取整)。主节点的个数最好是奇数个,并且不少于3个;但是会带来一个问题,如必须至少一半以上的主节点是可用的,如果不能满足这个要求,则系统就会崩溃。

 

我对ES的集群配置如下 ==>:

 

cluster.name: situtao-JQ        //集群名要相同才能划分到同一个集群内

node.name: node-2        //节点名具有唯一性,每个节点名字都应独立

network.host: 192.168.3.254                //此处填写的是本机IP或VIP(具体根据自己的需要决定,也可以本机IP+VIP,IP间使用逗号""分隔开

discovery.zen.ping.unicast.hosts: [192.168.3.81, 192.168.3.186, 192.168.3.254]        //设置新节点被启动时能够发现的主节点列表(主要用于不同网段机器连接)

discovery.zen.minimum_master_nodes: 2

 

index.number_of_shards: 3

index.number_of_replicas: 1

index.cache.field.type: soft    //默认类型为resident, 字面意思是常驻(居民), 一直增加,直到内存 耗尽。 改为soft就是当内存不足的时候,先clear掉 占用的,然后再往内存中放。设置为soft后,相当于设置成了相对的内存大小。resident的话,除非内存够大

 

discovery.zen.fd.connect_on_network_disconnect : true 

自动(被)发现配置:

discovery.zen.initial_ping_timeout : 30s 

discovery.zen.fd.ping_interval : 2s 

discovery.zen.fd.ping_retries  : 10

 

绑定本地IP,发送本地数据:

 

 

 

 

 

 

设置集群名称:

 

 

 

设置节点名称:

 

 

 

 

 

<== 集群配置END(注:)

重启ES服务,通过浏览器可以访问该机器上的ES服务:

 

 

 

 

 

 

 

安装监控插件:

 

1.安装elasticsearch-head :下载页面 ==>

http://mobz.github.io/elasticsearch-head/

 

安装方法:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  安装命令:

 ./bin/plugin install mobz/elasticsearch-head

 

2.安装elasticsearch-kopf :

  安装命令:

./bin/plugin install lmenezes/elasticsearch-kopf

 

监控运用实例:

重启ES服务,通过浏览器打开查看(以Head监控插件为例):(黑色实心表示此节点用于存储数据,星型代表主节点,圆点代表从节点)

1.操作,新建索引

 

 

 

 

 

 

 

 

 

 

 

2.返回ES概览查看:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

安装ik分词器:

NO1:安装开发环境maven:

下载:(官网)        

wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

安装:

确认JAVA安装完成:java -version

 

 

解压maven源码包:tar zxvf apache-maven-3.3.9-bin.tar.gz -C /usr/local/

添加环境变量:vim /etc/profile

export PATH=/usr/local/apache-maven-3.3.9/bin:$PATH

 

 

source /etc/profile 执行文件中的命令

验证:mvn --version

 

 

 

 

NO2:安装ik分词器:

版本对应:

IK version      ES version

master            2.3.1 -> master

1.9.3                2.3.3

1.9.0                2.3.0

1.8.1                2.2.1

1.7.0                2.1.1

1.5.0                2.0.0

1.2.6                1.0.0

1.2.5                0.90.x

1.1.3                0.20.x

1.0.0                0.16.2 -> 0.19.0

 

下载:git clone https://github.com/medcl/elasticsearch-analysis-ik

手动安装过程:

cd elasticsearch-analysis-ik

mvn clean

mvn compile

mvn package

 

执行完以上命令会在当前目录生 target/releases/elasticsearch-analysis-ik-1.9.3.zip文件

创建ik插件目录:mkdir /usr/local/apache-maven-3.3.9/plugin/ik

cp target/releases/elasticsearch-analysis-ik-1.9.3.zip /usr/local/apache-maven-3.3.9/plugins/ik

cd  /usr/local/apache-maven-3.3.9/plugins/ik

unzip elasticsearch-analysis-ik-1.9.3.zip

 

编辑ES配置文件,在末尾加入一行配置:

vim  /usr/local/apache-maven-3.3.9/config/elasticsearch.yml

index.analysis.analyzer.ik.type : ik

 

测试IK的效果:

1.创建索引:

curl -XPUT 192.168.3.81:9200/new_index -d '

{

  "mappings": { 

    "tags": {

      "properties": {

        "tags": { 

           "type":"string",

           "index":"not_analyzed"

        }

      }

    }

  }

}'

 

2.返回测试结果:

curl 'http://192.168.3.81:9200/new_index/_analyze?analyzer=ik&pretty=true' -d '

{

"text":"世界如此之大"

}'

=>显示结果:

{

  "tokens" : [ {

    "token" : "世界",

    "start_offset" : 0,

    "end_offset" : 2,

    "type" : "CN_WORD",

    "position" : 0

  }, {

    "token" : "如此之",

    "start_offset" : 2,

    "end_offset" : 5,

    "type" : "CN_WORD",

    "position" : 1

  }, {

    "token" : "如此",

    "start_offset" : 2,

    "end_offset" : 4,

    "type" : "CN_WORD",

    "position" : 2

  }, {

    "token" : "之大",

    "start_offset" : 4,

    "end_offset" : 6,

    "type" : "CN_WORD",

    "position" : 3

  } ]

}

 

3.添加数据:

curl -XPOST http://192.168.8.7:9200/new_index/fulltext/1 -d'

{"content":"美国留给伊拉克的是个烂摊子吗"}'

curl -XPOST http://192.168.8.7:9200/new_index/fulltext/2 -d'

{"content":"公安部:各地校车将享最高路权"}'

curl -XPOST http://192.168.8.7:9200/new_index/fulltext/3 -d'

{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}'

curl -XPOST http://192.168.8.7:9200/new_index/fulltext/4 -d'

{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}'

 

4.打开浏览器访问:

4.1 概览:

 

 

 

 

 

 

 

 

 

4.2 数据浏览:

 

 

 

 

 

 

 

 

 

4.3 基本查询:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.4 复合查询:

{"query":{"function_score":{"query":{"multi_match":{"query":"如今的投资者只能以“呵呵”二字默认","type":"most_fields","fields":["title","content"]}},"functions":[{"field_value_factor":{"field":"hit","modifier":"log1p","factor":0.1}},{"field_value_factor":{"field":"reply","modifier":"log1p","factor":0.5}}],"boost_mode":"sum","max_boost":2}},"highlight":{"fields":{"pre_tags":["<tag1>","<tag2>"],"post_tags":["</tag1>","</tag2>"],"content":{},"title":{}}},"from":0,"size":100}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

        本博客仅为记录自己的学习,更多文献出自于经过我验证的网络,更多详细分析我会在后面的博文中持续的更新!(欢迎点评和给我更好的建议)

 

 

 

 

 

转载于:https://my.oschina.net/u/2607319/blog/699461

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值