#query context: must should
#filter context: must_not filter
#修改嵌套bool查詢,修改權重,直接修改boost以及boost查詢實現權重提升
POST /products/_bulk
{ "index": { "_id": 1 }}
{ "price" : 10,"avaliable":true,"date":"2018-01-01", "productID" : "XHDK-A-1293-#fJ3" }
{ "index": { "_id": 2 }}
{ "price" : 20,"avaliable":true,"date":"2019-01-01", "productID" : "KDKE-B-9947-#kL5" }
{ "index": { "_id": 3 }}
{ "price" : 30,"avaliable":true, "productID" : "JODL-X-1937-#pV7" }
{ "index": { "_id": 4 }}
{ "price" : 30,"avaliable":false, "productID" : "QQPX-R-3956-#aD8" }
#基本語法
POST /products/_search
{
? "query": {
? ? "bool" : {
? ? ? "must" : {
? ? ? ? "term" : { "price" : "30" }
? ? ? },
? ? ? "filter": {
? ? ? ? "term" : { "avaliable" : "true" }
? ? ? },
? ? ? "must_not" : {
? ? ? ? "range" : {
? ? ? ? ? "price" : { "lte" : 10 }
? ? ? ? }
? ? ? },
? ? ? "should" : [
? ? ? ? { "term" : { "productID.keyword" : "JODL-X-1937-#pV7" } },
? ? ? ? { "term" : { "productID.keyword" : "XHDK-A-1293-#fJ3" } }
? ? ? ],
? ? ? "minimum_should_match" :1
? ? }
? }
}
#改變數據模型,增加字段。解決數組包含而不是精確匹配的問題
POST /newmovies/_bulk
{ "index": { "_id": 1 }}
{ "title" : "Father of the Bridge Part II","year":1995, "genre":"Comedy","genre_count":1 }
{ "index": { "_id": 2 }}
{ "title" : "Dave","year":1993,"genre":["Comedy","Romance"],"genre_count":2 }
#must,有算分
POST /newmovies/_search
{
? "query": {
? ? "bool": {
? ? ? "must": [
? ? ? ? {"term": {"genre.keyword": {"value": "Comedy"}}},
? ? ? ? {"term": {"genre_count": {"value": 1}}}
? ? ? ]
? ? }
? }
}
#Filter。不參與算分,結果的score是0
POST /newmovies/_search
{
? "query": {
? ? "bool": {
? ? ? "filter": [
? ? ? ? {"term": {"genre.keyword": {"value": "Comedy"}}},
? ? ? ? {"term": {"genre_count": {"value": 1}}}
? ? ? ? ]
? ? }
? }
}
#Filtering Context
POST _search
{
? "query": {
? ? "bool" : {
? ? ? "filter": {
? ? ? ? "term" : { "avaliable" : "true" }
? ? ? },
? ? ? "must_not" : {
? ? ? ? "range" : {
? ? ? ? ? "price" : { "lte" : 10 }
? ? ? ? }
? ? ? }
? ? }
? }
}
#Query Context
POST /products/_bulk
{ "index": { "_id": 1 }}
{ "price" : 10,"avaliable":true,"date":"2018-01-01", "productID" : "XHDK-A-1293-#fJ3" }
{ "index": { "_id": 2 }}
{ "price" : 20,"avaliable":true,"date":"2019-01-01", "productID" : "KDKE-B-9947-#kL5" }
{ "index": { "_id": 3 }}
{ "price" : 30,"avaliable":true, "productID" : "JODL-X-1937-#pV7" }
{ "index": { "_id": 4 }}
{ "price" : 30,"avaliable":false, "productID" : "QQPX-R-3956-#aD8" }
POST /products/_search
{
? "query": {
? ? "bool": {
? ? ? "should": [
? ? ? ? {
? ? ? ? ? "term": {
? ? ? ? ? ? "productID.keyword": {
? ? ? ? ? ? ? "value": "JODL-X-1937-#pV7"}}
? ? ? ? },
? ? ? ? {"term": {"avaliable": {"value": true}}
? ? ? ? }
? ? ? ]
? ? }
? }
}
#嵌套,實現了 should not 邏輯
POST /products/_search
{
? "query": {
? ? "bool": {
? ? ? "must": {
? ? ? ? "term": {
? ? ? ? ? "price": "30"
? ? ? ? }
? ? ? },
? ? ? "should": [
? ? ? ? {
? ? ? ? ? "bool": {
? ? ? ? ? ? "must_not": {
? ? ? ? ? ? ? "term": {
? ? ? ? ? ? ? ? "avaliable": "false"
? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? }
? ? ? ],
? ? ? "minimum_should_match": 1
? ? }
? }
}
#Controll the Precision
POST _search
{
? "query": {
? ? "bool" : {
? ? ? "must" : {
? ? ? ? "term" : { "price" : "30" }
? ? ? },
? ? ? "filter": {
? ? ? ? "term" : { "avaliable" : "true" }
? ? ? },
? ? ? "must_not" : {
? ? ? ? "range" : {
? ? ? ? ? "price" : { "lte" : 10 }
? ? ? ? }
? ? ? },
? ? ? "should" : [
? ? ? ? { "term" : { "productID.keyword" : "JODL-X-1937-#pV7" } },
? ? ? ? { "term" : { "productID.keyword" : "XHDK-A-1293-#fJ3" } }
? ? ? ],
? ? ? "minimum_should_match" :2
? ? }
? }
}
POST /animals/_search
{
? "query": {
? ? "bool": {
? ? ? "should": [
? ? ? ? { "term": { "text": "brown" }},
? ? ? ? { "term": { "text": "red" }},
? ? ? ? { "term": { "text": "quick"? }},
? ? ? ? { "term": { "text": "dog"? }}
? ? ? ]
? ? }
? }
}
POST /animals/_search
{
? "query": {
? ? "bool": {
? ? ? "should": [
? ? ? ? { "term": { "text": "quick" }},
? ? ? ? { "term": { "text": "dog"? }},
? ? ? ? {
? ? ? ? ? "bool":{
? ? ? ? ? ? "should":[
? ? ? ? ? ? ? { "term": { "text": "brown" }},
? ? ? ? ? ? ? ? { "term": { "text": "brown" }},
? ? ? ? ? ? ]
? ? ? ? ? }
? ? ? ? }
? ? ? ]
? ? }
? }
}
DELETE blogs
POST /blogs/_bulk
{ "index": { "_id": 1 }}
{"title":"Apple iPad", "content":"Apple iPad,Apple iPad" }
{ "index": { "_id": 2 }}
{"title":"Apple iPad,Apple iPad", "content":"Apple iPad" }
POST blogs/_search
{
? "query": {
? ? "bool": {
? ? ? "should": [
? ? ? ? {"match": {
? ? ? ? ? "title": {
? ? ? ? ? ? "query": "apple,ipad",
? ? ? ? ? ? "boost": 1.1
? ? ? ? ? }
? ? ? ? }},
? ? ? ? {"match": {
? ? ? ? ? "content": {
? ? ? ? ? ? "query": "apple,ipad",
? ? ? ? ? ? "boost":
? ? ? ? ? }
? ? ? ? }}
? ? ? ]
? ? }
? }
}
DELETE news
POST /news/_bulk
{ "index": { "_id": 1 }}
{ "content":"Apple Mac" }
{ "index": { "_id": 2 }}
{ "content":"Apple iPad" }
{ "index": { "_id": 3 }}
{ "content":"Apple employee like Apple Pie and Apple Juice" }
POST news/_search
{
? "query": {
? ? "bool": {
? ? ? "must": {
? ? ? ? "match":{"content":"apple"}
? ? ? }
? ? }
? }
}
POST news/_search
{
? "query": {
? ? "bool": {
? ? ? "must": {
? ? ? ? "match":{"content":"apple"}
? ? ? },
? ? ? "must_not": {
? ? ? ? "match":{"content":"pie"}
? ? ? }
? ? }
? }
}
POST news/_search
{
? "query": {
? ? "boosting": {
? ? ? "positive": {
? ? ? ? "match": {
? ? ? ? ? "content": "apple"
? ? ? ? }
? ? ? },
? ? ? "negative": {
? ? ? ? "match": {
? ? ? ? ? "content": "pie"
? ? ? ? }
? ? ? },
? ? ? "negative_boost": 0.5
? ? }
? }
}