当前位置: 首页 > news >正文

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

简介

   此前的专栏介绍Onesearch1.02.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

3) springboot starter

4) 搜索权限,搜出就能看到

5) 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,目前没有使用,本次升级未有涉及

后续详细介绍每个部分


http://www.mrgr.cn/news/31756.html

相关文章:

  • 路由器基本原理与配置
  • 十三、注解配置SpringMVC
  • Linux---常用shell脚本
  • AVL树了解并简单实现
  • Fisher矩阵和Hessian矩阵的关系:证明Fisher为负对数似然函数的Hessian的期望
  • 使用Python的Pyecharts 绘制地图
  • sourceTree使用脚本一键push代码到gerrit
  • Python使用总结之FastAPI高级功能探索:数据库集成与依赖注入
  • Redis使用场景 | 建议收藏✨
  • BCT 预估block change tracking file的大小
  • 系统分析与设计
  • 【服务器第二期】mobaxterm软件下载及连接
  • C#中DataGridView 的 CellPainting 事件的e.Handled = true
  • C++速通LeetCode中等第16题-环形链表II(快慢指针)
  • Linux笔记---简单指令
  • 前端框架Vue、React、Angular、Svelte对比
  • 写作练习(一)
  • 2024年华为杯中国研究生数学建模竞赛F题(X射线脉冲星光子到达时间建模)思路
  • 为什么Redis这么快及可以实现的功能
  • 大厂校招:希音(Shein)校园招聘面试题及参考答案
  • JavaEE: 深入探索TCP网络编程的奇妙世界(二)
  • idea中.git文件夹存在但是没有git功能列表
  • 关于CONCAT(‘18‘,FLOOR(RAND()*X);
  • Spring Boot技术在高校心理辅导系统中的应用研究
  • 下一代测试人:T人 or I人!
  • 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(三)-文档