【Elasticsearch】ES查询不等于的实现方式比较 must_not NOT !=

举报
小雨青年 发表于 2022/03/28 23:42:16 2022/03/28
【摘要】 前言 在我们ES的日常使用中,需要根据业务去筛选不等于某一个数值或者字符串的查询,下面我将列出几种实现方式,并比较优缺点,给大家参考。 查询 must_not must_not和must、filt...

前言

在我们ES的日常使用中,需要根据业务去筛选不等于某一个数值或者字符串的查询,下面我将列出几种实现方式,并比较优缺点,给大家参考。

查询

must_not

must_notmustfiltershould属于同一层级,都属于布尔查询下的文档匹配查询。

The clause (query) must not appear in the matching documents. Clauses are executed in filter context meaning that scoring is ignored and clauses are considered for caching. Because scoring is ignored, a score of 0 for all documents is returned.

  • 相当于在filter context中执行
  • 不会计入评分,分数返回0
  • 会使用缓存

SQL语句

ES查询也是可以使用SQL语句的。

POST /_sql?format=txt
{
  "query": "SELECT * FROM library ORDER BY page_count DESC LIMIT 5"
}

  
 
  • 1
  • 2
  • 3
  • 4

<>或者!=

SELECT last_name l FROM "test_emp" WHERE emp_no <> 10000 ORDER BY emp_no LIMIT 5;

  
 
  • 1

NOT

SELECT last_name l FROM "test_emp" WHERE NOT emp_no = 10000 LIMIT 5;

  
 
  • 1

总结

must_not 虽然跟must很像但是其实是和filter一样的,不会计算分数,并且会使用缓存。

参考资料

  • https://www.elastic.co/guide/en/elasticsearch/reference/7.11/query-dsl-bool-query.html
  • https://www.elastic.co/guide/en/elasticsearch/reference/7.9/sql-rest-overview.html

文章来源: coderfix.blog.csdn.net,作者:小雨青年,版权归原作者所有,如需转载,请联系作者。

原文链接:coderfix.blog.csdn.net/article/details/114066507

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。