ES 筆記九:Request Body 跟 Query DSL 簡介

CrazyZard發表於2019-10-17
  • 將查詢語句通過HTTP Request Body 傳送給Elasticsearch
  • Query DSL
    POST /movies,404_idx/_search?ignore_unavailable=true
    {
    "profile":true,
    "query":{
     "match_all" : {}  // 查詢所有的文件
    }
    }
  • From 從 0 開始 預設返回10個結果
  • 獲取靠後的翻頁,成本較高
    POST /kibana_sample_data_ecommerce/_search
    {
    "from":10,
    "size":20
    "query":{
     "match_all":{}
    }
  • 最好在“數字型”與“日期型”欄位上排序
  • 因為對於多值型別或分析過的欄位排序,系統會選一個值,無法得知該值
    GET kinaba_sample_data_ecommerce/_search
    {
    "sort":[{"order_date":"desc}],
    "from":10,
    "size":5,
     "query":{
     "match_all":{}
    }
  • 如果_source 沒有儲存,那就只返回匹配的文件後設資料
  • _source 支援使用萬用字元
  • _source["name ","desc"]

ES 筆記九:Request Body 跟Query DSL簡介

  • 能算出新的欄位
  • 用例:訂單中有不同的匯率,需要結合匯率對訂單價格進行排序
#指令碼欄位
GET kibana_sample_data_ecommerce/_search
{
  "script_fields": {
    "new_field": {
      "script": {
        "lang": "painless",
        "source": "doc['order_date'].value+'hello'"
      }
    }
  },
  "query": {
    "match_all": {}
  }
}
POST movies/_search
{
  "query": {
    "match": {
      "title": "Last Christmas"  // 相當於 OR 可出現其中1個
    }
  }
}

POST movies/_search
{
  "query": {
    "match": {
      "title": {
        "query": "Last Christmas",
        "operator": "AND"
      }
    }
  }
}
POST movies/_search
{
  "query": {
    "match_phrase": {
      "title":{
        "query": "one love"
        "slop":1 //中間可以一個其他詞
      }
    }
  }
}

相關文章