文档章节

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

骑着猪的公主
 骑着猪的公主
发布于 2016/06/22 19:11
字数 2262
阅读 278
收藏 3

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

       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}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

© 著作权归作者所有

骑着猪的公主
粉丝 4
博文 5
码字总数 13344
作品 0
朝阳
私信 提问
centos 7( linux )下安装elasticsearch教程

目录 概述 环境准备 elaticsearch简介 安装elasticsearch 彩蛋 概述 很久没有写博客了,最近在做全文检索的项目,发现elasticsearch踩了不少坑,百度点进去又是坑,在此记录一下自己的踩坑历程。...

java_龙
2018/10/15
0
0
Elasticsearch初探(1)——基本介绍与环境搭建

版权声明:本文版权归Jitwxs所有,欢迎转载,但未经作者同意必须保留原文链接。 https://blog.csdn.net/yuanlaijike/article/details/82966110 一、Elasticsearch简介 1.1 什么是Elasticsear...

Jitwxs
2018/10/08
0
0
Kubernetes-基于EFK进行统一的日志管理

1、统一日志管理的整体方案 通过应用和系统日志可以了解Kubernetes集群内所发生的事情,对于调试问题和监视集群活动来说日志非常有用。对于大部分的应用来说,都会具有某种日志机制。因此,大...

店家小二
2018/12/14
0
0
Java搜索引擎选择: Elasticsearch与Solr(转)

Elasticsearch简介 Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组...

easonjim
2017/11/13
0
0
ELK环境搭建(ElasticSearch+Logstash+kibana)

ELK是指Elasticsearch + Logstash + Kibaba三个组件的组合。本文讲解一个基于日志文件的ELK平台的搭建过程,有关ELK的原理以及更多其他信息,会在接下来的文章中继续研究。   在这个系统中...

阿恒灬
2017/10/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
3
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
3
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部