部分配置释义

索引创建

搜索扩展组件检查 ES 索引当前的配置并与期望的索引配置进行比较。根据选择的索引结构管理策略(Index Schema Management Strategy)采取不同的操作:

  • create-only - 创建所有缺失的索引,保留使用不相关配置的已存在索引。

  • create-or-recreate - 创建所有缺失的索引,重新创建使用不相关配置的已存在索引(会丢失所有索引数据)。这是默认策略。

  • none - 忽略缺失的索引,保留使用不相关配置的已存在索引。如需手动操作索引可以使用该策略。

application.properties 文件添加下列应用程序属性可以配置策略:

jmix.search.indexSchemaManagementStrategy = create-only

应用程序启动时会自动进行索引结构同步。此外,也可以通过 EntityIndexing MBeansynchronizeXXX 操作手动进行。

EntityIndexing MBean 还包含 recreateIndex 操作。该操作直接删除并创建索引,并忽略当前的索引结构管理策略,即使目标索引有实际的配置。所有索引数据都会丢失。

索引命名

索引的命名格式:<prefix><entity_name>

默认前缀为 search_index_

如果多个项目使用同一个 ES 服务,需要确保索引名称的唯一性:所有项目都需要唯一的实体名称或者项目需要使用不同的前缀。

前缀可以在 application.properties 文件使用下列属性配置:

jmix.search.searchIndexNamePrefix = demo_prefix_

已有数据索引

有两种方式处理已有数据的索引:

  • Automatic(自动) - 这是索引结构同步的一部分,默认启用。将已经存在索引的实体实例都加入队列中(后台进程)。可以仅对特定实体使用自动索引。

  • Manual(手动) - 调用 EntityIndexing MBeanenqueueIndexAll 操作。

如需启用对特定实体的自动索引,添加下列应用程序属性:

jmix.search.enqueueIndexAllOnStartupIndexRecreationEntities = Order_,Customer

另外,也可以通过添加下列应用程序属性完全禁用自动索引:

jmix.search.enqueueIndexAllOnStartupIndexRecreationEnabled = false

实体跟踪

默认情况下,系统会跟踪索引实体的变更。将所有变更实体的信息保存在索引队列中。

可以添加下列应用程序属性禁用该功能:

jmix.search.changedEntitiesIndexingEnabled = false

安全角色

为了能使用搜索组件的功能,用户必须拥有下列角色之一:

  • Search: edit filter 提供能在过滤器添加全文搜索条件的权限。

  • Search: view search results 提供访问搜索结果视图的权限。