ES基礎語法學習


說明:當前所有示例均使用Kibana執行,如果未安裝,可以選擇使用Postman執行測試

#數據寫入
PUT /kevin/doc/4
{
  "name":"kevin",
  "age":30
}
PUT /kevin/doc/8
{
  "name":"kevin",
  "age":26,
  "id":1
}
PUT /kevin/doc/10
{
  "name":"kevin",
  "age":25,
  "id":2
}
PUT /kevin/doc/2
{
  "name":"kevin2",
  "age":22,
  "id":3
}
PUT /kevin/doc/3
{
  "name":"kevin3",
  "age":23,
  "id":4
}

PUT /ding/doc/1
{
  "name":"ding",
  "age":18,
  "id":5
}


#查詢所有索引
GET /_search
GET /_all/_search?size=0
GET kevin/_search
{
  "query": {
    "match_all": {}
  }
}

#查詢指定索引
GET /kevin/_search
#查詢多個指定索引
GET /ding,kevin/_search?q=name:kevin

#簡單查詢-size為0
GET /kevin/_search
{
    "from":1,
    "size":0
}

#簡單條件查詢(允許單個值)
GET /kevin/_search
{
    "query" : {
        "term" : {
          "name":"kevin"
        }
    },
    "from":1,
    "size":10
}

#簡單條件查詢(允許多個值)
GET /kevin/_search
{
    "query" : {
        "terms" : {
          "age":[23,22]
        }
    }
}

#range簡單使用
#可使用條件:from, lt, lte, gt, gte,boost,format,time_zone
GET /kevin/_search
{
    "query" : {
        "range" : {
          "age":{"gte": 22, "lte": 23}
        }
    },
    "from": 0, "size": 20
}


#bool簡單使用:用於符合條件的聯合使用
GET /kevin/_search
{
  "query" : {
    "bool" : {
        "must": [
          {
            "term" : {
              "name":"kevin"
            }
          }
        ],
        "must_not": [
          {
            "term" : {
              "_id":"4"
            }
          }
        ],
        "filter": {
          "range": {
              "age": {"from":26}
            }
        }
    }
  },
  "from":0, "size": 2
}

#sort簡單使用
GET /kevin/_search
{
  "sort": [
    {
      "age": {
        "order": "asc"
      },
      "id": {
        "order": "desc"
      }
    }
  ]
}


#排序sort_mode_option支持:
#min,max,sum,avg,median,
#1.准備數據
PUT /price/doc/1
{
  "name":"shop1",
  "price":[3,3,9]
}
PUT /price/doc/2
{
  "name":"shop1",
  "price":[5,5,7]
}
PUT /price/doc/3
{
  "name":"shop1",
  "price":[6,6,6]
}

#2.查詢示例:
GET /price/_search
{
  "sort": [
    {
      "price": {
        "order": "desc",
        "mode": "min"
      }
    }
  ]
}

GET /price/_search
{
  "sort": [
    {
      "price": {
        "order": "desc",
        "mode": "max"
      }
    }
  ]
}

#Elasticsearch還支持按一個或多個嵌套對象中的字段排序。
#嵌套字段排序支持在現有排序選項之上有以下參數
#1.nested_path (嵌套對象中的直接字段:必須),
#2.nested_filter (嵌套路徑內的內部對象應與其匹配的過濾器)
#1.准備數據
PUT /shop/doc/1
{
  "name":"shop1",
  "price": {
    "total_price":10,
    "actual_price":6
  },
  "product":{
    "price":1,
    "quantity":[5,6]
  }
}
PUT /shop/doc/2
{
  "name":"shop2",
  "price": {
    "total_price":6,
    "actual_price":5
  },
  "product":{
    "price":1,
    "quantity":[4,6]
  }
}
PUT /shop/doc/3
{
  "name":"shop3",
  "price": {
    "total_price":3,
    "actual_price":7
  },
  "product":{
    "price":1,
    "quantity":[1,2]
  }
}
DELETE /shop
#2.查詢示例(存在問題-需要nested類型):
GET /shop/_search
{
  "sort": [
    {
      "product.quantity": {
        "order": "desc",
        "nested_path": "product"
      }
    }
  ]
}

#查詢指定字段(只包含 name 字段)
GET /kevin/_search
{
  "_source": {
    "includes": ["name"]
  }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM