创建全文检索索引
索引可以理解为一种分类结构,能根据关键字或词组快速地定位到相关的文档。索引也可以理解为图书馆的图书目录,为了让读者更好更快的查阅到自己想要看的书而设置的数据结构。
Ebaas平台使用Elasticsearch作为全文检索引擎,因而需要在ES中创建索引。关于ES索引的具体技术细节可以参看ES官网上的资料。Ebaas平台的一个重要目标是通过配置实现应用需求,而无需关注具体技术细节。因而,Ebaas平台在底层实现了与ES的无缝集成,使得用户无需具备ES的知识就能配置和创建ES的索引。
首先介绍三个术语:
-
适合全文检索的属性:是指属性的值包含了搜索所需要的关键字或词组。例如,事务数据类中的“主题”和“描述”属性,通常是类型为String的属性。 对于类型为数值,布尔,或日期的属性,通常适合于参数检索,而不适合用于全文检索。在DesignStudibo中,如果将某个属性的“是否适合全文检索”设置为“true”, 则表示该属性为适合全文检索的属性。
-
可全文检索数据类: 是指满足以下两个条件的数据类。首先该数据类必须是叶数据类,即没有子类的数据类。其次,该数据类必须具有一到 多个“适合全文检索”的属性(可以是从父类继承的属性)。
-
适合搜索建议的属性 : 是指属性的值适用于作为搜索建议供用户选择。搜索建议的意义在于引导用户去使用这些标准的词组,更容易搜到说关注的内容(类似百度搜索的搜索建议功能)。适用于搜索建议的属性通常为String类型,其值包括了用户经常搜索的关键字或词组。在DesignStudio中,如果将某个属性的“是否适合搜索建议”设置为“true”,则表示该属性为适合搜索建议的属性。
一个较为复杂的企业应用的数据模型通常有许多数据类,不是所有的数据类都需要使用全文检索。 因此,我们首先需要从业务需求的角度 确定哪些数据类需要配置为“可全文检索数据类”?然后,再确定这些数据类中哪些属性要配置为“适合全文检索的属性”或“适合搜索建议的属性”?
一旦确定后,就可以使用Ebaas平台的DesignStudio工具进行配置并创建全文检索索引。下面,我们以“事务跟踪管理”数据模型为例, 介绍配置和创建索引的过程。
配置可全文检索数据类
假设,事务跟踪管理系统只需要对“事务”数据类进行全文检索,并且选择“主题”和“描述”属性作为“适合全文检索”的属性。 配置的步骤很简单。
- 从“开始”菜单 => Ebaas =〉 DesignStudio打开DesignStudio工具
- 用admin用户打开“事务跟踪管理”数据模型
- 展开“数据类”文件夹的“事务”数据类
- 选择“主题”属性 => 在右边的配置参数选项卡中将“是否适合搜索建议”设置为“true”,见下图
- 选择“描述”属性 => 在右边的配置参数选项卡中将“是否适合全文检索”设置为“true”, (注意:不是“是否全文检索”参数, 见下图)
- 保存修改的数据模型到数据库
完成上述设置后,使得“事务”数据类成为“可全文检索数据类”。
创建全文检索索引
配置完“可全文检索数据类”后,就可以执行创建全文检索索引的工作。在工具栏点击“打开数据编辑器”图标切换到数据编辑器窗口,如下图。
- 在左边导航栏中点击选择“事务”数据类,在右边列表会显示“事务”数据类的数据实例
- 右键点击“事务”数据类节点,从弹出的菜单中点击“生成全文检索索引”
- 开始在ES创建索引,等待底部状态栏显示创建索引结束,即可
执行上述操作会向ES服务器发送以下请求:
- 如果“事务”数据类的索引已经存在,会删除已存在的索引
- 创建“事务”数据类的索引结构及属性影射
- 如果“事务”数据类存在数据实例,为每个数据实例创建全文检索索引
维护全文检索索引
完成上述操作后,在ES中便存在针对“事务”数据类的全文检索索引,用户就可以在Web客户端使用关键字或词组搜索事务了。 但是创建索引后,用户新提交的事务,修改之前事务的“主题”或“描述”属性值,或者删除的事务,使得数据库的数据与ES索引数据不同步, 是否需要重新执行上述的步骤来创建索引?答案是不需要。
一旦数据类的索引创建后,任何对“事务”数据类的添加,修改或删除都会从Ebaas数据库实时同步到ES的索引中。 所以会立刻体现搜索结果中。
以下两种情况出现时,则需要使用DesignStudio重新创建ES的索引。
- 当修改数据类的“是否适合全文检索”或“是否适合搜索建议”的配置设置时。使得数据类的“适合全文检索”属性发生变化
- 当Ebaas指向一个新的ES服务器时,需要在新的ES服务器中创建索引