Hello 大家,
天氣真的轉涼的很明顯餒!!
辦公室也不知道在冷幾點的XD
這個淺談的系列在兩個Part就要講完了
後面就會開始進入應用方面,
有機會也會順便介紹參數,
今天要講的是terms query
跟terms_set query
terms query
他其實跟term query
是一樣的東西噢!
他們的差別什甚麼呢?s
沒錯就是s
,
他從單數變成複數了XD
也就是說,
他可以一次搜尋多個值只需要使用逗號,
將其分開。
GET /_search
{
"query": {
"terms": {
"[field]": [ "[value1]", "[value2]" ],
}
}
}
[field]=你要搜尋的欄位
[value]=你要搜尋的值/字
terms_set query
這個主要是要找出指定的field中有相同的值的資料,
有一個field叫做food,
A資料內容是
{
"name": "Jim",
"food": [ "potato","apple" ],
"required_matches": 2
}
B資料內容是
{
"name": "Olivia",
"food": [ "parsley","apple" ]
}
那我們們使用terms_set query
找出有包含parsley
、apple
、potato
,
A跟B資料就會被找出來,
因為他們分別有兩個相同的內容,
這邊的下法如下:
{
"query": {
"terms_set": {
"food": {
"terms": [ "parsley", "apple", "potato" ],
"minimum_should_match_field": "required_matches"
}
}
}
}
這邊有個需要特別提的地方!
"minimum_should_match_field": "required_matches",
這個部分就是當資料有required_matches
這個field的時候,
資料內容必須符合相對應的數量才會被挑出來,
以A資料來說是2,
所以我今天搜尋的內容其中要包含兩個A資料才會被挑出來,
如果我今天只搜尋apple,
因為只有符合一項所以就不會被篩選到;
那如果沒有這個field的話,
就是只要符合任一一個項目就會被挑到。