需求: 在搜索视频的时候 , 我们需要选出isDel 字段为0 和 isPublish字段为1的数据 , 还需要根据搜索的关键词 "搞笑的" 去videoTitle和labels里面查询, 如果在其中一个有出现则需要筛出来
一: 使用bool 条件查询 的must 和should 同级别查询的话会失效, 如下所示:
{
"from": 0,
"size": 10,
"query": {
"bool": {
"must": [
{
"term": {
"isPublish": {
"value": 1,
"boost": 1
}
}
},
{
"term": {
"isDel": {
"value": 0,
"boost": 1
}
}
}
],
"should": [
{
"match": {
"videoTitle": {
"query": "搞笑的",
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1.5
}
}
},
{
"match": {
"labels": {
"query": "搞笑的",
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"version": true,
"sort": [
{
"_score": {
"order": "desc"
}
},
{
"watchCount": {
"order": "desc"
}
}
]
}
二: 正确的使用方法应该是, must 级别下 , 分别有 must 和 should , 具体查询如下:
{
"from": 0,
"size": 10,
"query": {
"bool": {
"must": [
{
"match": {
"isDel": {
"query": 0,
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1
}
}
},
{
"match": {
"isPublish": {
"query": 1,
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1
}
}
},
{
"bool": {
"should": [
{
"match": {
"videoTitle": {
"query": "权重",
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1.5
}
}
},
{
"match": {
"labels": {
"query": "权重",
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"version": true,
"sort": [
{
"_score": {
"order": "desc"
}
},
{
"watchCount": {
"order": "desc"
}
}
]
}