搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(一)-概述

简介

此前的专栏介绍Onesearch1.0和2.0,详情参考**++4++** ++参考资料++ ,本文解释onesearch 3.0,从Elasticsearch6升级到Elasticsearch8代码实现 ,Elasticsearch8 废弃了high rest client,使用新的ElasticsearchClient,本文重点介绍ElasticsearchClient如何实现onesearch的特性,同时解释onesearch代码实现细节。

ElasticsearchClient使用起来3个特点,

  1. Builder,核心对象通过builder构建
  2. Lambda构建,builder支持使用lambda
  3. 强类型和容器,如,聚合,每个类型构建和取值,同时提供容器,可放入不同聚合,为用户提供抽象处理

特性

v1.0 schema管理,0代码agg,通用表达式映射引擎,抽象搜索引擎

v2.0

  1. 分布式文件索引

  2. 增强映射引擎

full text查询映射策略

match/match_phrase/query_string/。。。

返回字段,使用source field

nested

  1. springboot starter

  2. 搜索权限,搜出就能看到

  3. suggester

v3.0 elasticsearch 6 升级到 8,client更换为ElasticsearchClient

术语

  • 文档 Document

elasticsearch 一行数据称为文档,需要注意与文件/文档区分,有冲突的地方用"ES文档"区分

  • 索引schema

相当于关系数据库的schema,xml格式,定义索引的字段,类型,还有搜索策略,分词等搜索相关属性

  • 搜索/过滤

elasticsearch查询(query)分两部分,搜索和过滤,搜索计算文档与搜索词相似(匹配)度,得出分数排序,分数越高相似度越高,排序也靠前;过滤相当于sql的where,结果是true或者false

  • 分词

索引可以设定是否分词,分词器分割文本或字符串成term,适用模糊搜索;反之,使用term查询

  • 查询对象装配映射

查询的装配映射是onesearch的特性,elasticsearch es dsl 查询功能非常丰富,可调参数多, 提供精准细致的搜索调整,但也很难用,更难复用,onesearch设计装配映射组件支持通用表达式转换esdsl,用户只需编写通用表达式,如,((f1='a'or f2='b') and f3='c')) 即可实现搜索过滤,类似elasticsearch自身也提供了sql查询功能,大大降低开发难度,同时具备高复用性

参考资料

https://blog.csdn.net/szlhj/category_11563011.html onesearch 1.0/2.0

架构

  • schema 模块,定义索引字段,索引策略,搜索策略等,管理索引及其搜索特性
  • 聚合搜索 (agg) 模块,基于schema模块,支持xml定义agg,零编码增加agg主题
  • 查询模块,负责构建通用表达式(如,((f1='a'or f2='b') and f3='c')),作为搜索输入条件代替esdsl
  • 映射引擎,映射通用表达式为最优的es dsl,支持=,!=,like,in,range,prefix,not/and/or,大小括号,点(.)等操作符映射,解决es dsl难使用,难复用的痛点
  • 抽象搜索引擎接口,无缝接入不同的搜索引擎,如,elasticsearch,solrcloud等,更可同时使用多种引擎
  • 同步,全量同步/增量同步,使用分布式dataX

*geo api 未实现

工程结构-引擎部分

上一章架构介绍 本文解释elasticsearch v8 client开发,下图介绍一下引擎部分,服务和api部分不深入介绍

adapter-api 抽象的搜索引擎接口,主要有索引服务,搜索服务,文档服务

adapter-elasticsearch elasticsearch实现

引擎层之上是服务层,服务层不依赖具体引擎,因此可以适配不同的搜索引擎,甚至可以同时使用不同的搜索引擎

elasticsearch升级

本章开始介绍elasticsearch升级, onesearch改造,分4部分,

  1. 索引, 构建索引,put mapping,put nested mapping,alias,删除索引

  2. 文档,文档构建和写入,nested

  3. 搜索,query,filter,nested,高亮,分页,排序

  4. 聚合,agg查询,agg构建(bucket类型和metrics类型), 聚合结果

还有suggester,目前没有使用,本次升级未有涉及

后续详细介绍每个部分

相关推荐
熙客1 天前
搜索引擎数据库介绍
搜索引擎
Elastic 中国社区官方博客1 天前
使用 Mastra 和 Elasticsearch 构建具有语义回忆功能的知识 agent
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
新手小白*1 天前
Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】
大数据·elasticsearch·搜索引擎
网络精创大傻1 天前
构建 Multilingo:一个集成 Telex 的 AI 翻译代理
人工智能·搜索引擎
王道长服务器 | 亚马逊云2 天前
AWS + 苹果CMS:影视站建站的高效组合方案
服务器·数据库·搜索引擎·设计模式·云计算·aws
金士镧(厦门)新材料有限公司2 天前
稀土化合物:未来科技的隐藏推动力
科技·安全·全文检索
Elastic 中国社区官方博客2 天前
如何使用 Ollama 在本地设置和运行 GPT-OSS
人工智能·gpt·elasticsearch·搜索引擎·ai·语言模型
青鱼入云2 天前
ES索引配置字段解读
大数据·elasticsearch·搜索引擎
阿里云大数据AI技术2 天前
为什么 OpenSearch 向量检索能提速 13 倍
搜索引擎
深圳市恒讯科技2 天前
使用站群服务器做SEO,如何避免被搜索引擎判定为“站群作弊”?
服务器·搜索引擎·php