1.查询1100表中,userType满足1或2或3,level满足1,2的数据
{
"query": {
"bool": {
"must": [
{
"term": {"dataType":1100}
},
{
"terms": {"dataBody.useType":[1,2,3]}
},
{
"terms": {"dataBody.level":[1,2]}
}
]
}
},
"size": 10,
"from": 0,
"sort": []
}
2.先模糊搜索,然后对搜索出来的数据进行过滤,满足typeName是成品或原材料,等等(写在filter里面也可以实现,效果好像没有区别,filter可能会快点)
{
"query": {
"bool": {
"must": [
{
"match": {"dataType": 1100}
},
{
"bool": {
"should": [
{
"wildcard": {"dataBody.codeWildcard": {"value": "*test*"}}
},
{
"wildcard": {"dataBody.nameWildcard": {"value": "*test*"}}
}
]
}
},
{
"terms": {"dataBody.typeName": ["成品","原材料"]}
},
{
"terms": {"dataBody.rohs": [0,2,3]}
},
{
"range": {"dataBody.creationTime": {"gte": "2023-09-21T16:00:00","lte": "2023-09-28T15:59:59"}}
}
//],
//"filter": [
// {
// "terms": {"dataBody.rohs": [0,2,3]}
// },
// {
// "terms": {"dataBody.typeName": ["原材料","成品"]}
// },
// {
// "range": {"dataBody.creationTime": {"gte": "2023-09-21T16:00:00","lte": "2023-09-28T15:59:59"}}
// }
]
}
},
"sort": [
{
"dataBody.code.keyword": {
"order": "asc"
}
}
]
}
3. should
should里面每一个匹配条件都互不相干,每个匹配条件相对于一个快速筛选。
例如:条件1是用户类型是1、2的。条件2客户收入是1,2的。
{
"query": {
"bool": {
"should": [
{匹配条件1},
{匹配条件2},
…可以有N个匹配条件…
]
}
}
}