iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 10
0

Hello 大家,
天氣真的轉涼的很明顯餒!!
辦公室也不知道在冷幾點的XD
這個淺談的系列在兩個Part就要講完了
後面就會開始進入應用方面,
有機會也會順便介紹參數,
今天要講的是terms queryterms_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找出有包含parsleyapplepotato
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的話,
就是只要符合任一一個項目就會被挑到。


上一篇
Day09 Kibana的Query DSL Part3
下一篇
Day11 Kibana的Query DSL Part5
系列文
Hey~有聽說資安跟ELK有一腿嗎?30

尚未有邦友留言

立即登入留言