一、为什么要用ElasticSearch呢?这是一个什么东西呢?
提到搜索,可能会想到谷歌? 百度 ?这些都不是我们程序员所说的搜索引擎。 现在最先进、性能比较高的搜索开源库应该是lucene,es就是建立在lucene基础上的。那我们为什么不直接使用lucene呢?因为lucene只是一个类库,使用成本太高,你需要对他的内部有很充分的理解,并且根据java语言去开发,引入其类库,才能开始使用他。而es帮我们简化了很多,es也是利用java语言开发的,可以说es完全简化的使用搜索引擎,我们可以用java,也可以直接用http的RESTful API,直接使用。甚至在完全不需要关心其内部怎么实现,什么原理的情况下,只需要知道其调用api就可以使用起来,帮我们隐藏了很多复杂的知识。
es跟关系型数据库有很大的不同,传统的数据库存储必须是表格形式,字段对应值,当表格里面的某个字段仍然是一个对象的时候,可能需要另外扩展一张表才能很好的解释清楚。但是es不同,利用json的优势,可以存储任何形式的对象,人们也把它存储的内容称为文档。并且对这些文档的检索效率很高,还可以分析聚合....,总之,是一个很值得使用的工具。
二、安装es
ElasticSearch的安装非常简单,但是在过程中可能会遇到一些问题,而且现在百度搜索到的很多都是旧版本,所以如果安装新版本的话,建议按照官方的学习文档去操作,有一些命令或者安装方法还是有细微的区别的。我自己用的是mac,所以下面的安装都是基于mac环境的。
1、下载最新版本的es,地址:https://www.elastic.co/downloads/elasticsearch。解压文件。
2、es目录结构:
config:配置文件
lib:类库
bin:可执行文件
logs:日志
plugins:es的插件
3、启动es:
执行bin下面的 : ./bin/elasticsearch
如果console中打印的内容没有报错,就是启动成功了。可以通过:http://localhost:9200/?pretty 测试
三、es安装的问题汇总
上面的第三步,正常人都会遇到报错信息,自己也摸索了一下才解决,也总结下吧;具体错误大家应该能看懂,就不贴了,只写解决问题方法。
1、es安装,是基于jdk的,并且jdk的版本必须是jdk8或者以上版本
2、启动es的时候发现失败,这里root用户不能直接启动es,因为调用es的api,可以直接将命令发送给es执行,所以用root用户执行可能会有一些危险。
3、问题二换普通用户操作的时候发现报错,提示权限问题,这里应该是普通用户对es目录下的logs文件权限不够,用最简单粗暴的方法,一个命令解决: