开发者学堂课程【ElasticSearch 入门精讲:布尔值(bool)查询】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/631/detail/10023
布尔值(bool)查询
内容介绍:
一、求一个并集和或者的关系
二、must,should,must_not 的用法
一、求一个并集和或者的关系
→返回匹配address=mill&address=lane
curl-XPOST'localhost:9200/bank/_ search? pretty'-d
{
"query”:{
"bool":{
"must":[
{"match":{"address":"mill"}},
{"match":{"address":"Iane"}}
]
}
1.举例运行以下代码:
'{
"query”:{
"bool":{
"must":{
"match":{
"address":"Iane"
}
}
运行结果:
可以观察到现在结果包含 Lane
2.举例运行以下代码:
{
"query”:{
"bool":{
"must":{
"match":{
"address":"mill"
}
}
运行结果:
提交请求后可以得到如下图,
注意:must 是一个数组,里面是有两个结果。
3.代码形式变成如下
{
"query”:{
"bool":{
"must":[
{"match":{"address":"mill"}},
{"match":{"address":"Iane"}}
]
运行结果:
验证 JSON,结果如图。
二、must,should,must_not的用法
→must:要求所有条件都要满足(类似于&&)
should:任何一个满足就可以(类似于||)
must _ not:所有条件都不能满足(类似于!(&&))
→返回匹配address=mill or address=lane
curl-XPOST'localhost:9200/bank/search? pretty'-d
'{
"query":{
"bool":{
"should":[
{"match":{"address":"mill"}},
{"match":{"address":"|ane"}}
]
(1)must--运行如下代码
"query”:{
"bool":{
"must":[
{"match":{"address":"mill"}},
{"match":{"address":"Iane"}}
]
运行结果:
验证 JSON,结果如图。must 里面包含两种接受类数据,并且 match 中也是接收类数据
(2)should--运行如下代码
{
"query”:{
"bool":{
"should":[
{"match":{"address":"mill"}},
{"match":{"address":"Iane"}}
]
运行结果:
满足条件的记录已经显示出,既包括mill有包含lane
should:任何一个满足就可以(类似于ll)
→返回不匹配address=mill&address=lane
curl -XPOST 'localhost:9200/bank/search? Pretty’-d
'{
“query":{
“bool”:{
"must_not":[
{"match":{"address":"mill"}},
{"match":{"address":"Iane"}}
]
(3)must_not 运行如下代码
{
"query”:{
"bool":{
"must_not":[
{"match":{"address":"mill"}},
{"match":{"address":"Iane"}}
]
}
运行结果:
该结果是既没有 mill 也没有 lane,两者都不满足。
→must _ not:所有条件都不能满足(类似于!(&&))
返回age=40&state!=ID
curl -XPOST 'localhost:9200/bank/search? pretty' -d
‘{
“query":{
“bool":{
“must”:[
{"match":{"age":40}}
],
"must_not”:[
{“match”:{"state":“ID”}}
]
}
上述是一个满足一个不满足。
(4) must和must_not--代码举例
{
"query”:{
"bool":{
"must":[
{
"match":{
"age":"40"
}
},
“must_not”:{
"match":{"state":"ID"
}
}
运行结果:
age 都是等于40,并且 state 都不等于ID
(5)举例:
代码举例:
{
"query”:{
"bool":{
"must":{
"match":{"state":"ID"
}
}
运行结果:
State 的结果均是 ID
代码举例:
{
"query”:{
"bool":{
"must":[
{
"match":{
"state":"ID"
}
},
{
"match":{"age":"40"
}]
运行结果:
选择出 state 为 ID,并且年龄是40的
不满足条件举例:
{
"query”:{
bool":{
"must_not":
{
"match":{
"state":"ID"
}
},
{ “must”:{
"match":{"age":"40"
运行结果:
State 不等于 ID,age依旧是40