Ebaas

创建全文检索索引

May 14, 2020 | 0 Minute Read

索引可以理解为一种分类结构,能根据关键字或词组快速地定位到相关的文档。索引也可以理解为图书馆的图书目录,为了让读者更好更快的查阅到自己想要看的书而设置的数据结构。

Ebaas平台使用Elasticsearch作为全文检索引擎,因而需要在ES中创建索引。关于ES索引的具体技术细节可以参看ES官网上的资料。Ebaas平台的一个重要目标是通过配置实现应用需求,而无需关注具体技术细节。因而,Ebaas平台在底层实现了与ES的无缝集成,使得用户无需具备ES的知识就能配置和创建ES的索引。

首先介绍三个术语:

  • 适合全文检索的属性:是指属性的值包含了搜索所需要的关键字或词组。例如,事务数据类中的“主题”和“描述”属性,通常是类型为String的属性。 对于类型为数值,布尔,或日期的属性,通常适合于参数检索,而不适合用于全文检索。在DesignStudibo中,如果将某个属性的“是否适合全文检索”设置为“true”, 则表示该属性为适合全文检索的属性。

  • 可全文检索数据类: 是指满足以下两个条件的数据类。首先该数据类必须是叶数据类,即没有子类的数据类。其次,该数据类必须具有一到 多个“适合全文检索”的属性(可以是从父类继承的属性)。

  • 适合搜索建议的属性 : 是指属性的值适用于作为搜索建议供用户选择。搜索建议的意义在于引导用户去使用这些标准的词组,更容易搜到说关注的内容(类似百度搜索的搜索建议功能)。适用于搜索建议的属性通常为String类型,其值包括了用户经常搜索的关键字或词组。在DesignStudio中,如果将某个属性的“是否适合搜索建议”设置为“true”,则表示该属性为适合搜索建议的属性。

提示: 设置为“适合于搜索建议”的属性也是“适合于全文检索”的属性,所以不用将其“适合用于全文检索”的设置为“true”。


一个较为复杂的企业应用的数据模型通常有许多数据类,不是所有的数据类都需要使用全文检索。 因此,我们首先需要从业务需求的角度 确定哪些数据类需要配置为“可全文检索数据类”?然后,再确定这些数据类中哪些属性要配置为“适合全文检索的属性”或“适合搜索建议的属性”?

一旦确定后,就可以使用Ebaas平台的DesignStudio工具进行配置并创建全文检索索引。下面,我们以“事务跟踪管理”数据模型为例, 介绍配置和创建索引的过程。

配置可全文检索数据类

假设,事务跟踪管理系统只需要对“事务”数据类进行全文检索,并且选择“主题”和“描述”属性作为“适合全文检索”的属性。 配置的步骤很简单。

  • 从“开始”菜单 => Ebaas =〉 DesignStudio打开DesignStudio工具
  • 用admin用户打开“事务跟踪管理”数据模型
  • 展开“数据类”文件夹的“事务”数据类
  • 选择“主题”属性 => 在右边的配置参数选项卡中将“是否适合搜索建议”设置为“true”,见下图

  • 选择“描述”属性 => 在右边的配置参数选项卡中将“是否适合全文检索”设置为“true”, (注意:不是“是否全文检索”参数, 见下图)

  • 保存修改的数据模型到数据库

完成上述设置后,使得“事务”数据类成为“可全文检索数据类”。

创建全文检索索引

配置完“可全文检索数据类”后,就可以执行创建全文检索索引的工作。在工具栏点击“打开数据编辑器”图标切换到数据编辑器窗口,如下图。

  • 在左边导航栏中点击选择“事务”数据类,在右边列表会显示“事务”数据类的数据实例
  • 右键点击“事务”数据类节点,从弹出的菜单中点击“生成全文检索索引”
  • 开始在ES创建索引,等待底部状态栏显示创建索引结束,即可

执行上述操作会向ES服务器发送以下请求:

  • 如果“事务”数据类的索引已经存在,会删除已存在的索引
  • 创建“事务”数据类的索引结构及属性影射
  • 如果“事务”数据类存在数据实例,为每个数据实例创建全文检索索引
提示: 您也可以点击“事务跟踪管理”数据库节点,右键选择“生成全文检索索引”在ES中同时创建所有“可全文检索数据类”的索引。 如果您只需要创建个别数据类的索引,建议不要采用这个方法。因为整个数据库的索引都会重建。


维护全文检索索引

完成上述操作后,在ES中便存在针对“事务”数据类的全文检索索引,用户就可以在Web客户端使用关键字或词组搜索事务了。 但是创建索引后,用户新提交的事务,修改之前事务的“主题”或“描述”属性值,或者删除的事务,使得数据库的数据与ES索引数据不同步, 是否需要重新执行上述的步骤来创建索引?答案是不需要。

一旦数据类的索引创建后,任何对“事务”数据类的添加,修改或删除都会从Ebaas数据库实时同步到ES的索引中。 所以会立刻体现搜索结果中。

以下两种情况出现时,则需要使用DesignStudio重新创建ES的索引。

  • 当修改数据类的“是否适合全文检索”或“是否适合搜索建议”的配置设置时。使得数据类的“适合全文检索”属性发生变化
  • 当Ebaas指向一个新的ES服务器时,需要在新的ES服务器中创建索引