Ebaas

Elasticsearch安装与配置

May 13, 2020 | 1 Minute Read

数据全文检索是企业应用软件应要提供的一个重要功能。关系数据库(例如,Oracle,SQL Server或MySQL等)虽然提供了强大的数据管理,存储, 查询和事务处理能力,但是全文检索功能并不出色,与百度或谷歌等全文检索功能相比还有较大的差距。

在全文检索功能方面,Ebaas平台之前的版本提供了基于关系数据库的全文检索。从Ebaas 7.3.0版本开始,提供了基于Elasticsearch(简称ES)的全文检索功能。基于ES的全文检索功能比基于数据库的全文检索功能有很大的改进,可以提供类似百度和谷歌的良好搜索体验和更快的搜索速度,使得用户能方便、快速并精准地找到自己所关心的数据。

接下来的几个教程主要介绍如何配置和使用基于ES的全文检索。

ES是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是一个流行的全文检索引擎。能够达到实时搜索,稳定,可靠,快速,安装使用方便,零配置和完全免费。如果您有兴趣可以先去了解下ES的一些基本概念,可以到Elasticsearch官网上查看资料,这里就不一一赘述了。

ES并不等同于关系数据库,主要用于创建数据索引(Index)和搜索。因而,Ebaas平台还是使用关系数据库作为主要数据源,而使用ES保存索引和全文检索。Ebaas平台与ES进行了无缝的集成,使得您只要进行简单的配置就能使用ES强大的全文检索功能查询Ebaas平台中保存的数据,而无需进行任何开发工作。

ES软件不包含在Ebaas平台的安装包中,需要单独安装(可以在Ebaas平台之前或之后安装)。这个教程我们介绍ES的安装和配置步骤。

ES的安装

ES的安装很简单,这里我们介绍在Windows上安装ES。

  • 确保机器上已经安装了Java 8以上版本
  • 下载ES (要求6.2.3以上版本):官网下载地址:https://www.elastic.co/downloads/elasticsearch
  • 将下载后的文件解压到指定的目录(例如: C:/eshome/elasticsearch-6.2.3),后续称为ES安装目录
  • 双击“{ES安装目录}/bin/elasticsearch.bat”启动ES服务器
提示: 如果双击启动ES不成功,用CMD命令来执行这个文件,可以查看具体失败原因。如果是因为内存不满足ES的默认要求,可以通过修改ES的配置来解决。


  • 验证ES服务器是否启动,可以使用浏览器访问  http://localhost:9200, 会在浏览器显示类似下列结果(如果ES是安装在本地电脑上)。
{
  "name" : "Dqdicw4",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Q_gr2daSQ2KQu4aPrh9pVQ",
  "version" : {
    "number" : "6.2.3",
    "build_hash" : "c59ff00",
    "build_date" : "2018-03-13T10:06:29.741383Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

ES附带了很多合理的默认值,它安装好了就可以使用了。对于我们的教程,使用ES的默认设置就够用了。对于实际的项目和不同的检索需求,还可以利用ES更多高级的功能,可以很灵活地进行配置,根据自身需求来定制属于自己的全文搜索功能。具体请参考ES官网的资料。

安装ik中文分词插件

Elasticsearch本身自带分词器standard,但对中文的支持不是很好。比如针对“我是中国人”,会分词成“我”、“是”、“中”、“国”、“人”。这显然不是我们想要的结果。我们更希望“中国”、“中国人”这样的分词。 因此,我们需要中文分词插件。这样会有更好的中文搜索效果。

IK Analysis for Elasticsearch是一款开源的能符合我们需求的中文分词插件。IK中文分词插件需要另行安装。安装步骤很简单:

  • 首先确保你已经下载和解压了ES 6.2.3以上的版本
  • 使用CMD命令进入ES的安装目录,并使用elasticsearch-plugin来安装,安装命令如下:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.3/elasticsearch-analysis-ik-6.2.3.zip
提示: 以上例子安装的是IK 6.2.3版本。如果您安装不同的IK插件版本,请修改上面命令中的版本号。另外,安装时需要有Internet连接。


安装好IK分词插件后,要重启Elasticsearch。

另外,为了方便测试和管理ES,建议您从“Chrome Web Store”下载和安装“Elasticsearch Head”web插件,用于查看索引和查询数据。

配置ES服务器URL

开启Ebaas基于Elasticsearch的全文检索模式只需要在Ebaas的配置文件中配置ES的服务器URL。如果您的ES安装在本地机器上,默认的URL为: http://localhost:9200。

使用文本编辑器打开C:\Program Files\Ebaas\Config\Elasticsearch_config.xml文件,将“ElasticsearchURL”参数设置为:http://localhost:9200 。如果您安装了IK中文分词插件,这需要去掉“Ananlyzer”和“Search-Ananlyzer”的注释,使得Ebaas平台将创建索引时使用IK分词插件。如下所示。

<?xml version="1.0" encoding="utf-16"?>
<Settings>
    <add key="ElasticsearchURL" value="http://localhost:9200" />
    <add key="analyzer" value="ik_max_word" />
    <add key="search_analyzer" value="ik_max_word" />
</Settings>

保存配置文件后,重启Ebaas服务器即可。

接下来,使用所推荐的浏览器登陆到(http://localhost:8080) => 登陆到Web界面后,会看到页面的上端出现了全文检索的查询框,见下图。表示基于ES的全文检索已经开启。但是还搜索不到任何数据,因为我们还没有配置和创建任何索引。

下一个教程将介绍如何配置和创建ES的索引。