searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

基于OpenSearch搜索引擎的Search请求及插件开发简介

2024-05-22 03:16:21
43
0

OpenSearch简介

OpenSearch 是一个社区驱动的开源搜索引擎和分析组件,开发人员使用该套件来摄取、搜索、可视化和分析数据。 OpenSearch 由数据存储和搜索引擎 (OpenSearch)、可视化和用户界面 (OpenSearch Dashboards) 以及服务器端数据收集器 (Data Prepper) 组成。 用户可以使用一系列增强搜索、分析、可观察性、安全性、机器学习等的插件来扩展 OpenSearch 的功能。

搜索引擎Search请求框架分析

搜素引擎原理.jpeg
我们将一次搜索引擎的Search请求进行拆解:
大多数情况下都是query then fetch,可以将这个过程主要分为3个主要阶段:

  1. 集群管理阶段:获取需要调用的分片相关信息。
  2. 倒排索引召回阶段:在每个分片内,进行具体search操作----切词、召回、汇总(顺带推荐)。
  3. 正排捞取阶段:根据docid,在分片fetch操作—根据域捞取数据、筛选数据、排序等操作。

完成如上遍历以后,搜索引擎将搜索结果以Json的形式返回给Client端,其中,OpenSearch可以认为仅仅是一个内部调度工具和管理平台,核心和底层就是Lucence,最基本的倒排、正排、单独倒排这些思想全部抽象在Lucence中。

OpenSearch插件开发

优势&收益

OpenSearch支持了插件开发的机制,在此机制下,用户可以在不修改OpenSearch源码的基础上,通过编写接口API的方式,为Opensearch增加诸多功能,极大丰富了OpenSearch的功能。这样无侵入式的开发,既保留了代码的稳定性和健壮性,也可以在高可用集群的基础上,为解决定制化需求新增新的功能。

切入点

插件开发主要从以下几个API入手:

  • ActionPlugin Restful API命令请求插件,扩展性实现最基础的插件
  • AnalysisPlugin 主要的跟分词、过滤相关的插件,也是最为活跃的改动的插件,自定义切词必须走这里
  • ClusterPlugin 集群管理插件,自定义集群管理策略
  • DiscoveryPlugin 结点发现插件
  • IngestPlugin 数据接入插件
  • MapperPlugin 映射相关的插件
  • NetworkPlugin 网络传输相关插件
  • RepositoryPlugin 存储、快照等相关插件
  • ScriptPlugin 脚本插件,主推painless
  • SearchPlugin 查询插件,这是最主要的和search相关的插件,提供了教丰富也很复杂的功能
  • ReloadablePlugin 重启相关插件

插件原理简介

插件原理.png

1、插件的加载时机是在节点启动创建的时候中会扫描Opensearch的安装目录下的plugins和module的插件列表,并通过PluginService进行解析插件。

2、PluginFilter是用来识别plugin类别的一个方法,通过每个插件实现的接口将所有插件分类并分发给Opensearch不同的服务组件进行注册。

3、在node不同的服务启动过程中会读取每个和自己相关的组件进行扩展,最终插件都会形成服务提供给集群使用(比如SearchPlugin最终会在searchTransportService中提供服务)




以上就是OpenSearch搜索引擎的Search请求及基本插件开发的简介,欢迎同学们指正

0条评论
0 / 1000
pyyuhao
1文章数
0粉丝数
pyyuhao
1 文章 | 0 粉丝
pyyuhao
1文章数
0粉丝数
pyyuhao
1 文章 | 0 粉丝
原创

基于OpenSearch搜索引擎的Search请求及插件开发简介

2024-05-22 03:16:21
43
0

OpenSearch简介

OpenSearch 是一个社区驱动的开源搜索引擎和分析组件,开发人员使用该套件来摄取、搜索、可视化和分析数据。 OpenSearch 由数据存储和搜索引擎 (OpenSearch)、可视化和用户界面 (OpenSearch Dashboards) 以及服务器端数据收集器 (Data Prepper) 组成。 用户可以使用一系列增强搜索、分析、可观察性、安全性、机器学习等的插件来扩展 OpenSearch 的功能。

搜索引擎Search请求框架分析

搜素引擎原理.jpeg
我们将一次搜索引擎的Search请求进行拆解:
大多数情况下都是query then fetch,可以将这个过程主要分为3个主要阶段:

  1. 集群管理阶段:获取需要调用的分片相关信息。
  2. 倒排索引召回阶段:在每个分片内,进行具体search操作----切词、召回、汇总(顺带推荐)。
  3. 正排捞取阶段:根据docid,在分片fetch操作—根据域捞取数据、筛选数据、排序等操作。

完成如上遍历以后,搜索引擎将搜索结果以Json的形式返回给Client端,其中,OpenSearch可以认为仅仅是一个内部调度工具和管理平台,核心和底层就是Lucence,最基本的倒排、正排、单独倒排这些思想全部抽象在Lucence中。

OpenSearch插件开发

优势&收益

OpenSearch支持了插件开发的机制,在此机制下,用户可以在不修改OpenSearch源码的基础上,通过编写接口API的方式,为Opensearch增加诸多功能,极大丰富了OpenSearch的功能。这样无侵入式的开发,既保留了代码的稳定性和健壮性,也可以在高可用集群的基础上,为解决定制化需求新增新的功能。

切入点

插件开发主要从以下几个API入手:

  • ActionPlugin Restful API命令请求插件,扩展性实现最基础的插件
  • AnalysisPlugin 主要的跟分词、过滤相关的插件,也是最为活跃的改动的插件,自定义切词必须走这里
  • ClusterPlugin 集群管理插件,自定义集群管理策略
  • DiscoveryPlugin 结点发现插件
  • IngestPlugin 数据接入插件
  • MapperPlugin 映射相关的插件
  • NetworkPlugin 网络传输相关插件
  • RepositoryPlugin 存储、快照等相关插件
  • ScriptPlugin 脚本插件,主推painless
  • SearchPlugin 查询插件,这是最主要的和search相关的插件,提供了教丰富也很复杂的功能
  • ReloadablePlugin 重启相关插件

插件原理简介

插件原理.png

1、插件的加载时机是在节点启动创建的时候中会扫描Opensearch的安装目录下的plugins和module的插件列表,并通过PluginService进行解析插件。

2、PluginFilter是用来识别plugin类别的一个方法,通过每个插件实现的接口将所有插件分类并分发给Opensearch不同的服务组件进行注册。

3、在node不同的服务启动过程中会读取每个和自己相关的组件进行扩展,最终插件都会形成服务提供给集群使用(比如SearchPlugin最终会在searchTransportService中提供服务)




以上就是OpenSearch搜索引擎的Search请求及基本插件开发的简介,欢迎同学们指正

文章来自个人专栏
pyyuhao
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0