這邊舉例幾個常用的範例,無法全部列舉出來
POST 30day-000001/_doc/3?refresh=true
{
"@timestamp": "2020-09-28T03:51:03",
"message": "30day very good",
"level": "INFO",
"staus": 200
}
匹配查詢match是個核心查詢。無論需要查詢什麼字段,match查詢都應該會是首選的查詢方式。它是一個高級全文查詢,這表示它既能處理全文字段,又能處理精確字段。
GET /30day-000001/_search
{
"query": {
"match": {
"level": {
"query": "INF",
"fuzziness": "AUTO" #允許模糊程度
}
}
}
}
GET /30day-000001/_search
{
"query": {
"match": {
"message": {
"query": "30day very not good",
"operator": "AND" # 設定query匹配運算子,選項有AND和OR(預設是OR),範例這個搜尋是找不到資料的因為分詞裡沒有"not"這個字
}
}
}
}
Term可以用來精確匹配,精確匹配的值可以是數字、時間、布爾值
避免使用Term來搜尋text欄位
GET /30day-000001/_search
{
"query": {
"term": {
"staus": {
"value": 200, #要查詢的值
"boost": 1.0 #關聯分數設定(預設1.0)
}
}
}
}
可用來範圍查詢
GET /30day-000001/_search
{
"query": {
"range": {
"staus": {
"gt": 100, #大於(gte大於或等於)
"lt": 300, #小於(lte小於等於)
}
}
}
}
Bool查詢,也可以稱作組合查詢
GET /30day-000001/_search
{
"query":{
"bool": {
"filter": [
{
"match": {
"level": "INFO"
}
}
],
"must": {
"match": {
"staus": 200
}
}
}
}
}