一、Elasticsearch简介

1.1 什么是Elasticsearch

Elasticsearch是一个实时的分布式搜索和分析引擎。它可以用于全文搜索结构化搜索以及分析,当然你也可以将这三者进行组合。

Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。

Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。

当然Elasticsearch并不仅仅是Lucene这么简单,它的主要特性包括:

  • 分布式搜索
  • 多租户
  • 查询统计分析
  • 分组和聚合

这里给大家推荐下刘欣老师的两篇文章,通过讲故事的方法从底向上的叙述Lucene和Elasticsearch技术:

搜索之路

搜索之路:Elasticsearch的诞生

1.2 和Solr有啥区别

提到Elasticsearch,就不能不提到Solr,下面通过几个方面来对比这两者。

(1)Elasticsearch基本是开箱即用,非常简单。而Solr安装略微复杂,可以参考文章:《Solr 初探(1)——Solr 介绍》

(2)Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。

(3)Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持JSON文件格式。

(4)Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑。

(5)Solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;ES建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索。Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

(6)Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而 Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高。

二、Elasticsearch安装

和Solr一样,得益于Java的跨平台特性,所以在Windows下和在Linux下安装的步骤其实是一样的,因此方便起见,我们在Windwos下安装。

Elasticsearch 6.4.1下载链接点击这里:https://www.elastic.co/downloads/past-releases/elasticsearch-6-4-1 ,在我写这篇文章时(2018-10-8),最新版本为6.4.2,但是对应的IK分词器只更新到了6.4.1,因此本系列文章均以6.4.1为例。

2.1 下载安装

Elasticsearch采用Java开发,因此必须具备Java环境。

解压后进入elasticsearch-6.4.1\bin,然后双击elasticsearch.bat即可。访问http://localhost:9200 即可看到是否安装成功。如果显示JSON串就表示安装成功。

默认情况下,Elasticsearch 只允许本机访问,如果需要远程访问,可以修改 Elastic 安装目录的config/elasticsearch.yml文件,去掉network.host的注释,将它的值改成0.0.0.0,然后重新启动 Elastic。

【注:0.0.0.0代表任何人都可以访问。线上服务不要这样设置,要设成具体的 IP。】

2.2 安装Head插件

2.2.1 下载源码包

将该项目下载下来并解压: https://github.com/mobz/elasticsearch-head ,放在elasticsearch-6.4.1 同级目录即可。

2.2.2 编译安装

(1) 修改配置文件elasticsearch-6.4.1/config/elasticsearch.yml,在末尾追加内容:

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

(2)编译安装需要Node.js的支持,安装比较简单,因为我已经有环境了,就不在描述了,直接百度即可。Nodejs环境搭建完毕后,进入elasticsearch-head-master文件夹,执行命令:

1
2
3
4
5
6
//注:如果安装了cnpm,就使用cnpm,否则使用默认的npm
//进入head插件目录,执行命令
npm install -g grunt-cli
//完成之后,再执行命令
npm install
//需要注意的是:如果报错,请重复执行几次,应该会成功

2.2.3 运行

安装完成之后,执行命令:grunt server,显示如下图,然后就可以访问 http://localhost:9100 即可访问ElasticSearch的head插件了。