Elasticsearch系列(三)----Elasticsearch5.5.1与插件安装

一、下载源码


Elasticsearch官网地址:https://www.elastic.co/cn/ ,网上的教程用得比较多是2.x版本的,直到 2016-12 推出了5.x 版本 ,将版本号调为 5.X ,这是为了和Kibana、Beats、Logstash等产品版本号进行统一,Elasticsearch5.x加入了一些新特性,

具体可参考这:http://www.cnblogs.com/zlslch/p/6619089.html


官网首页如下:




点击"Dowloads"选择Elasticsearch




选择发行版,默认当前版本为5.5.1然后进行下载






二、进行安装


下载下来之后,进行解压



进入bin目录下




执行elasticsearch.bat进行启动




启动成功,访问地址为:127.0.0.1:9200,输出信息如下




然后访问这个地址查看版本等一些信息,这不是图形化的界面,操作起来不是很方便,所以希望能有一个可视化的环境来操作它,可以通过安装Elasticsearch Head这个插件来进行管理。



三、插件安装



名词解释


在刚接触Elasticsearch的时候,会有很多名词不能理解,或者不知道其中的关系。其中很多是为不同版本的Elasticsearch而存在的。


Marvel

Marvel插件:在簇中从每个节点汇集数据。这个插件必须每个节点都得安装。 
Marvel是Elasticsearch的管理和监控工具,在开发环境下免费使用。它包含了Sense。


Sense

交互式控制台,使用户方便的通过浏览器直接与Elasticsearch进行交互。


Head


在学习Elasticsearch的过程中,必不可少需要通过一些工具查看es的运行状态以及数据。如果都是通过rest请求,未免太过麻烦,而且也不够人性化。此时,Head插件可以实现基本信息的查看,rest请求的模拟,数据的检索等等。


X-pack


x-pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,也是官方推荐的。


Kibana

kibana是一个与elasticsearch一起工作的开源的分析和可视化的平台。使用kibana可以查询、查看并与存储在elasticsearch索引的数据进行交互操作。使用kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据。

kibana使得理解大容量的数据变得非常容易。它非常简单,基于浏览器的接口使我们能够快速的创建和分享显示elasticsearch查询结果实时变化的仪表盘。


在Elasticsearch 5版本之前,一般都是通过安装Kibana,而后将Marvel、Hand等各种功能插件添加到Kibana上使用。在Elasticsearch 5版本之后,一般情况下只需要安装一个官方推荐的X-pack扩展包即可。



1)Elasticsearch Head


Elasticsearch Head是集群管理、数据可视化、增删改查、查询语句可视化工具,在最新的ES5中安装方式和ES2以上的版本有很大的不同,在ES2中可以直接在bin目录下执行plugin install xxxx 来进行安装,但是在ES5中这种安装方式变了,要想在ES5中安装Elasticsearch Head必须要安装NodeJs,然后通过NodeJS来启动Head。具体安装步骤如下:


首页去github下载源码:https://github.com/mobz/elasticsearch-head 




下载下来之后,要安装NodeJS,安装方式可参考我这篇文章: http://blog.csdn.net/u011781521/article/details/53519225


安装NodeJS之后,使用npm安装grunt


npm install -g grunt -cli


然后在目录下执行


cnpm install



安装好之后,还要修改Elasticsearch配置文件,编辑elasticsearch-5.5.1/config/elasticsearch.yml,加入以下内容:




编辑elasticsearch-head-master文件下的Gruntfile.js,修改服务器监听地址,增加hostname属性,将其值设置为*。


以下两种配置都是OK的


# Type1


connect: {
        hostname: '*',
        server: {
                options: {
                        port: 9100,
                        base: '.',
                        keepalive: true
                }
        }
}

# Type 2


connect: {
        server: {
                options: {
                        hostname: '*',
                        port: 9100,
                        base: '.',
                        keepalive: true
                }
        }
}


编辑elasticsearch-head-master/_site/app.js,修改head连接es的地址,将localhost修改为es的IP地址


# 原配置

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";




# 将localhost修改为ES的IP地址

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://YOUR-ES-IP:9200";


注意:如果ES是在本地,就不要修改,默认就是localhost


在启动elasticsearch-head之前要先启动elasticsearch,在elasticsearch-head-master/目录下,运行启动命令:


grunt server



然后访问:127.0.0.1:9100这个地址



注意:
① 此时elasticsearch-head为前台启动,如果终端退出,那么elasticsearch-head服务也会随之关闭。
② 在非elasticsearch-head目录中启动server会失败!因为grunt需要读取目录下的Gruntfile.js。


2)安装Kiabna


Kibana是一个为 ElasticSearch 提供的数据分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。


Kiabna的介绍可查考官方的说明:https://www.elastic.co/cn/products/kibana 

下载地址为:https://www.elastic.co/cn/downloads/kibana




下载下来,解压如下




修改config / kibana.yml文件,加入以下内容:


server.port: 5601  
server.name: "kibana"  
server.host: "127.0.0.1"  
elasticsearch.url: "http://127.0.0.1:9200" 




然后执行bin目录下的kibana.bat启动服务





浏览器访问地址:http://127.0.0.1:5601/




出现警告

Unable to fetch mapping. Do you have indices matching the pattern? 

不管怎么弄,都是提示上面的错误!!!最后在网上找到中说法是,没有往Elasticsearch中插入数据所引起的:


https://discuss.elastic.co/t/unable-to-fetch-mapping-do-you-have-indices-matching-the-pattern/73791/4




https://www.elastic.co/guide/en/kibana/current/tutorial-define-index.html


https://www.elastic.co/guide/en/kibana/current/tutorial-load-dataset.html


在上面的两个网址中找到了解决方法:


在Sense中执行以下数据就可以了


PUT /logstash-2017.08.13
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}




然后在返回到kibana首页,就会发现不会出现警告了!!!





然后点击"Create"




3)安装Logstash


Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。




官网下载地址为:https://www.elastic.co/downloads/logstash





下载下来之后,解压如下




然后添加配置文件




添加如下内容:


input {
  log4j {
    host => "127.0.0.1"
    port => 8801
  }
}
output {
    elasticsearch {
        hosts => [ "127.0.0.1:9200" ]
    }
}

然后启动服务


logstash.bat -f first-pipeline.conf



4)安装x-pack


x-pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,虽然x-pack被设计为一个无缝的工作,但是你可以轻松的启用或者关闭一些功能,X-Pack主要是添加身份权限的验证,以及原先需要安装其他各种Marvel、Head等各种功能插件添加到Kibana上使用才能使用的功能。


X-PACK详细介绍可查看:https://www.elastic.co/products/x-pack


安装的两种方式:


1.离线安装


xxx(路径)\bin>.\elasticsearch-plugin.bat install file:/G:\Developer\Elasticsearch5\x-pack-5.5.1.zip  (Windows下file:/或者 file:///都行)


2.在线安装


xxx(路径)\bin>.\elasticsearch-plugin.bat install x-pack


注意的是能在线安装的插件和早先版本有所区别,可通过cmd cd至ES 的bin目录下elasticsearch-plugin.bat install -h 命令查看


5.5.1版本可在线安装的插件列表如下:



在线安装如下:


.\elasticsearch-plugin.bat install x-pack



然后在Kibana中也安装x-pack,安装方式如下:


 .\kibana-plugin.bat install x-pack




安装好X-PACK之后,启动Elasticsearch就提示:


[2017-08-13T23:28:10,458][DEBUG][o.e.a.ActionModule       ] Using REST wrapper from plugin org.elasticsearch.xpack.XPackPlugin
[2017-08-13T23:28:21,144][ERROR][o.e.b.Bootstrap          ] Exception
org.elasticsearch.ElasticsearchException: Failed to create native process factories for Machine Learning
	at org.elasticsearch.xpack.ml.MachineLearning.createComponents(MachineLearning.java:289) ~[?:?]
	at org.elasticsearch.xpack.XPackPlugin.createComponents(XPackPlugin.java:288) ~[?:?]
	at org.elasticsearch.node.Node.lambda$new$7(Node.java:411) ~[elasticsearch-5.5.1.jar:5.5.1]
	at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267) ~[?:1.8.0_131]
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) ~[?:1.8.0_131]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_131]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_131]
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_131]
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_131]
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[?:1.8.0_131]
	at org.elasticsearch.node.Node.<init>(Node.java:413) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.node.Node.<init>(Node.java:244) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:232) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:232) ~[elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:351) [elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) [elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) [elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) [elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) [elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.cli.Command.main(Command.java:88) [elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.5.1.jar:5.5.1]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.5.1.jar:5.5.1]
Caused by: java.io.FileNotFoundException: \\.\pipe\controller_log_4992 (系统找不到指定的文件。)
	at java.io.FileInputStream.open0(Native Method) ~[?:1.8.0_131]
	at java.io.FileInputStream.open(FileInputStream.java:195) ~[?:1.8.0_131]
	at java.io.FileInputStream.<init>(FileInputStream.java:138) ~[?:1.8.0_131]
	at java.io.FileInputStream.<init>(FileInputStream.java:93) ~[?:1.8.0_131]
	at org.elasticsearch.xpack.ml.utils.NamedPipeHelper$PrivilegedInputPipeOpener.run(NamedPipeHelper.java:297) ~[?:?]
	at org.elasticsearch.xpack.ml.utils.NamedPipeHelper$PrivilegedInputPipeOpener.run(NamedPipeHelper.java:286) ~[?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_131]
	at org.elasticsearch.xpack.ml.utils.NamedPipeHelper.openNamedPipeInputStream(NamedPipeHelper.java:139) ~[?:?]
	at org.elasticsearch.xpack.ml.utils.NamedPipeHelper.openNamedPipeInputStream(NamedPipeHelper.java:106) ~[?:?]
	at org.elasticsearch.xpack.ml.job.process.ProcessPipes.connectStreams(ProcessPipes.java:140) ~[?:?]
	at org.elasticsearch.xpack.ml.job.process.NativeController.<init>(NativeController.java:67) ~[?:?]
	at org.elasticsearch.xpack.ml.job.process.NativeControllerHolder.getNativeController(NativeControllerHolder.java:50) ~[?:?]
	at org.elasticsearch.xpack.ml.MachineLearning.createComponents(MachineLearning.java:279) ~[?:?]
	... 21 more

Caused by: java.io.FileNotFoundException: \\.\pipe\controller_log_4992 (系统找不到指定的文件。)在网上找了半天才找到解决方法:

https://discuss.elastic.co/t/unable-to-start-elasticsearch-5-4-0-in-docker/84800




在Elasticsearch/config/elasticsearch.yml加入以下参数:


action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.security.enabled: false
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false

再次启动




成功运行


5)IK分词器和拼音分词器的安装


分词顾名思义,就是把一句话分成一个一个的词。


安装中文分词器IK

https://github.com/medcl/elasticsearch-analysis-ik

执行以下命令:

.\elasticsearch-plugin.bat install https://github.com/medcl/elas
ticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip


安装拼音分词器pinyin

https://github.com/medcl/elasticsearch-analysis-pinyin

pinyin分词器可以让用户输入拼音,就能查找到相关的关键词。比如在某个商城搜索中,输入shuihu,就能匹配到水壶。这样的体验还是非常好的。

执行以下命令:

.\elasticsearch-plugin.bat install https://github.com/medcl/elas
ticsearch-analysis-pinyin/releases/download/v5.5.1/elasticsearch-analysis-pinyin-5.5.1.zip


6)Elasticsearch SQL查询插件


Elasticsearch-sql 是给予es的提供sql查询服务。你可以很方便的用sql的方式查询es的数据。不必困扰于ES变态的查询表达式,同时提供了超越sql的功能。Github地址: https://github.com/NLPchina/elasticsearch-sql/


5.5.1插件的安装方式如下

./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.5.1.0/elasticsearch-sql-5.5.1.0.zip


然后下载客户端https://github.com/NLPchina/elasticsearch-sql/releases/download/5.4.1.0/es-sql-site-standalone.zip


解压,进入site-server目录



执行以下命令


npm install express --save
node node-server.js 

进行安装与启动,然后访问: http://localhost:8080/index.html




输入一个存在的索引,然后点击Search进行查询。


注意:


右上脚的连接地址,要改成你要连接的那个ES地址。

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值