诗林 发表于 2024-9-21 06:55:25

搜索引擎onesearch3实现表明和升级到Elasticsearch v8系列(四)-搜索

搜索 

     搜索内容比力多,onesearch分成两部分,第一部分,Query构建,其中包括搜索词设置,设置返回字段,filter,高亮;第二部分分页和排序。第一部分是映射引擎负责,映射通用表达式为具体引擎的查询(Query)。
SearchRequest构建

构建Query

https://i-blog.csdnimg.cn/direct/aa5f578b826e4a798038ddac9fd9452d.png
searchRequest.source 设置是否保留source,若保留source字段可以返回source范例字段
排除_content字段返回,该字段是文档内容,通常比力大,content返回高亮片断
Query使用Wrapper,跟上一版本不同,需自行base64编码,以前版本不必要
queryMapping mapTo 方法  query块映射引擎表明表达式按战略映射为esdsl,具体可参考 onesearch 1.0 文档
再见esdsl,搜索引擎 elasticsearch通用表达式搜索(附源码)_es表达式检索引擎-CSDN博客
构建高亮 

https://i-blog.csdnimg.cn/direct/4a293825aafc4512afa90e0e3413af55.png高亮字段设置本着默认即可用的原则,假如用户没有传入,Text范例字段设置高亮,目前没有支持字段级的高亮设置,实际上字段级设置使用上很麻烦
构建完整的搜索哀求

服务层调用映射引擎构建Query和高亮部分,然后传给引擎层搜索服务,处理分页,排序,agg,末了执行,效果处理
https://i-blog.csdnimg.cn/direct/4ccbf4da757c44e0aa0e2cda84b325d6.png
引擎层,设置分页和排序,整个SearchRequest构建完成
范例库

范例库设置索引返回对应的范例,默认情况下返回Map,设置范例库可以返回bean
https://i-blog.csdnimg.cn/direct/48698d69c07642daae0bf47cfea862d4.png
上图设置了索引”pdm-document”的返回范例,Elasticsearch8 通过SearchRequest的模板范例雷同的实现
nested搜索

nested使用通用表达式的“.”,如,nested.a,nested字段的a属性
https://i-blog.csdnimg.cn/direct/b3e7a5f41ff84bf5b43aa8f7caee4d39.png
为了兼容性,设置了nested enable开关,nested enabled 的OperatorMapping实现可辨认”.”操纵符,映射为esdsl nested path
下图示例
https://i-blog.csdnimg.cn/direct/6fb40c1a6f17415f84391019ab56ddd6.png
对应转换后的esdsl
https://i-blog.csdnimg.cn/direct/fcef018b08704010adfa21be21b1bda8.png
处理搜索效果 

搜索返回SearchResponse,包括搜索效果和agg效果,搜索效果包括高亮处理,agg效果处理放在agg章节介绍
https://i-blog.csdnimg.cn/direct/1492d8cb84cd434991c973329f3e78fb.png
下图搜索效果处理逻辑
https://i-blog.csdnimg.cn/direct/c44e9ffcf3d2472bbeb53780a27704d7.png

[*]content 字段用于全文搜索,文档内容,系统的保留名称,为了反面业务冲突,alias名称 “_content”
[*]效果字段使用source字段,即,索引source属性设置为true,后续可选使用doc field
[*]设置高亮的字段,如,content,优先返回高亮片断,而不是source,高亮字段可设置,系统默认Text范例为高亮
末了返回total,用于下一页搜索,搜索展示在下一篇聚合,综合展示搜索效果

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 搜索引擎onesearch3实现表明和升级到Elasticsearch v8系列(四)-搜索