Elastic Search常用API

Eelastic Search常用API

索引操作

創建索引

# 方式一(ES7 在不指定分片數和副本的情況下:默認創建一個主分片,一個副本)
PUT /monk

# 方式二
PUT monk
{
  "settings": {
    "number_of_replicas": 1,  //副本數
    "number_of_shards": 1  //分片數
  }
}

刪除索引

DELETE /monk

修改索引配置

# 修改副本數量
PUT /monk/_settings
{
  "number_of_replicas":0
}

數據操作

添加數據

# 指定數據ID
POST /monk/_doc/1001
{
  "id": 1001,
  "name":"張三",
  "age": 24,
  "sex": "男"
}
# 不指定數據IDES會自動生成一個(字段id和_id是兩個字段,在某種意義上有很大的區別)
POST /monk/_doc/
{
  "id": 1001,
  "name":"張三",
  "age": 24,
  "sex": "男"
}

刪除數據

DELETE /monk/_doc/1001

更新數據

全量更新數據

# 方式一
POST /monk/_doc/1001
{
  "id": 1001,
  "name":"張三",
  "age": 24,
  "sex": "女"
}

# 方式二(全量更新的時候,不區分POST/PUT請求方式)
PUT /monk/_doc/1001
{
  "id": 1001,
  "name":"張三",
  "age": 24,
  "sex": "女"
}

局部更新數據

# 局部更新數據的時候,只允許POST請求
POST /monk/_update/1001
{
  "doc":{
     "sex": "男"
  }
}

查詢操作

關於查詢操作有太多太多,這裏也就不一一列舉,可以參照官網,這裏從官網上找了些簡單的題目做了下,可以參照下。

# 根據ID查詢
GET /bank/_source/
{
  "query": {
    "match": {
      "_id": 1
    }
  }
}

# 更新指定ID的年齡(使用腳本的方式)
POST /bank/_update/1
{
  "script": "ctx._source.age+=5"
}


# 執行match_all操作,並按帳戶餘額降序對結果進行排序,並返回前10個的賬戶和賬戶餘額
GET /bank/_search/
{
  "query": {
    "match_all": {
    }
  },
  "sort": [
    {
      "balance": {
        "order": "desc"
      }
    }
  ],
  "_source": ["account_number", "balance"], 
  "size": 10,
  "from": 0
}


# 返回帳戶爲20的
GET /bank/_search/
{
  "query": {
    "match": {
      "account_number": 20
    }
  }
}

# 返回地址中包含“mill”或“lane”的所有帳戶
GET /bank/_search/
{
  "query": {
    "match": {
      "address": "mill lane"
    }
  }
}

# 返回地址中包含“mill”和“lane”的所有帳戶
GET /bank/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "address": "mill"
          }
        },
        {
          "match": {
            "address": "lane"
          }
        }
      ]
    }
  }
}

# 地址中既不包含“mill”也不包含“lane”的所有帳戶
GET /bank/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "address": "mill"
          }
        },
        {
          "match": {
            "address": "lane"
          }
        }
      ]
    }
  }
}

# 返回所有40歲但不居住在ID的人(state不等於ID)的賬戶
GET  /bank/_search/
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "age": 40
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "state": "ID"
          }
        }
      ]
    }
  },
  "_source": ["age", "state"]
}

# 返回餘額在20000到30000之間的所有帳戶,包括餘額
GET /bank/_search
{
  "query": {
    "range": {
      "balance": {
        "gte": 20000,
        "lte": 30000
      }
    }
  },
  "_source": ["account_number", "balance", "state"], 
  "size": 10,
  "from": 0
}

# 按狀態(state)對所有帳戶進行分組,然後返回按count升序排列的前5個
GET /bank/_search
{
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword",
        "size": 5,
        "order": {
          "_count": "asc"
        }
      }
    }
  },
  "size": 0
}

# 按狀態計算平均帳戶餘額,並倒序排列返回前五條記錄
GET /bank/_search
{
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword",
        "order": {
          "avg_balance": "desc"
        },
        "size": 5
      },
      "aggs": {
        "avg_balance": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  },
  "size": 0
}


# 按照年齡等級(20-29歲,30-39歲,40-49歲)分組,然後按性別分組,最後得到每個年齡等級,每個性別的平均賬戶餘額
GET /bank/_search
{
  "aggs": {
    "group_by_age": {
      "range": {
        "field": "age",
        "ranges": [
          {
            "from": 20,
            "to": 30
          },{
            "from": 30,
            "to": 40
          },{
            "from": 40,
            "to": 50
          }
        ]
      },
      "aggs": {
        "group_by_gender": {
          "terms": {
            "field": "gender.keyword",
            "size": 10
          },
          "aggs": {
            "avg_balance": {
              "avg": {
                "field": ""
              }
            }
          }
        }
      }
    }
  },
  "size": 0
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章