需求: 在搜索視頻的時候 , 我們需要選出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"
}
}
]
}