怎么写ES or查询的query?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么写ES or查询的query?相关的知识,希望对你有一定的参考价值。
参考技术A 百度es的or查询,大多数的博客会告诉你用should,但是should应该加在哪儿,有很多的谬误,导致query和实际查询语义不一样。例如实现 "name"=="a" and ("city" == "b" or "city" == "c") ,是不是以为这样就可以?
是不可以的,当must和should同级时,should只影响评分_score,而不具备过滤功能,查询结果见图1,city=='d'的doc也返回了,只不过评分低一些。
怎么办呢?有两种解决方案。
扩展.
等价于 year==2020 and learn_season in (2,20,21,22,...) and main_grade in (1,2,3) and lesson_stop_time >=1598244100 and lesson_assistant_status ==1 and (assistant_preclass_live_duration > 0 or assistant_postclass_live_duration > 0)
扩展之又.
or 查询中有不等于怎么办?百度会告诉你 用must_not,
例如 city== a or city != c ,ES 不支持不等于运算符, must_not是和bool同级使用的,怎么办呢?
转变思路, city != c 是不是就是等价于 city > c or city < c ,query就可以这么写。
that's all,enjoy~
SQL语句where多条件查询怎么写
select * from table where a=b or b=c or c=d and id>100用or 和 and,
上面的意思是找到TABLE表里,条件为:A=B或者B=C或者C=D,而且这条数据ID>100的。。。
注意不同数据库用法不同,不过比较类似MSSQL MYSQL,只是一些语法上的不一样。
条件用
OR,或者,只要满足一个条件,
AND条件都满足,
看你自己需求来写。
select * from a
where b like '%1%'
and b like '%2%'
and b like '%3%'
and c not like '%4%'
以上是关于怎么写ES or查询的query?的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch 查询语法 --- 2022-04-03