(转)elasticsearch 常见几种查询方式
原文:https://zhuanlan.zhihu.com/p/344773076
1.精准查询term
term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇
1.term单值
字段只有一个值时候,用term关键词查询

优化:进一步优化查询,因为是精准查询,不需要查询进行评分计算,只希望对文档进行包括或排除的计算,所以我们会使用 constant_score 查询以非评分模式来执行 term 查询并以一作为统一评分。

2.terms多值
字段有一多个值时候,用terms关键词查询,后跟数组
优化同上
3.term多字段

2.匹配查询match
区别:match和term的区别是,match查询的时候,elasticsearch会根据你给定的字段提供合适的分析器,而term查询不会有分析器分析的过程,match查询相当于模糊匹配,只包含其中一部分关键词就行
1.match
进行full text search或者exact value(非string字段或not_analyzed的字段),进行匹配
2.match_all
{ "match_all": {}} 匹配所有的, 当不给查询条件时,默认全查
3.multi_match
同时对查询的关键词,多个字段同时进行匹配,即多个字段是AND的关系

深入:同时field还支持更为丰富的查询
在在fields中,按brandName(品牌名)、sortName(分类名)、productName(商品名)productKeyword(商品关键字),搜索“牛仔 弹力”关键词,brandName源值、拼音值、关键字值都是100分,sortName源值、拼音值80分,productName源值60分,productKeyword值20分,分值由高到低优先级搜索

4.match_phrase
match_phrase查询分析文本,并从分析文本中创建短语查询。
类似 match 查询, match_phrase 查询首先将查询字符串解析成一个词项列表,然后对这些词项进行搜索,但只保留那些包含 全部 搜索词项,且 位置与搜索词项相同的文档


3.bool查询
bool查询包含四种操作符,分别是must,should,must_not,query。它们均是一种数组,数组里面是对应的判断条件
1.must:
必须匹配,与and等价。贡献算分
2.must_not:
必须不匹配,与not等价,常过滤子句用,但不贡献算分
3.should:
选择性匹配,至少满足一条,与 OR 等价。贡献算分
4.filter:
过滤子句,必须匹配,但不贡献算分
4.filter查询
过滤器,会查询对结果进行缓存,不会计算相关度,避免计算分值,执行速度非常快。
filter也常和range范围查询一起结合使用,range范围可供组合的选项
gt : 大于
lt : 小于
gte : 大于等于
lte :小于等于

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战