1. 程式人生 > >Elasticsearch API實現增刪改查

Elasticsearch API實現增刪改查

使用kibana對elasticsearch進行操作

  1. 開啟elasticsearch和kibana
  2. 訪問http://192.168.25.129:5601 (使用安裝kibana的ip)
  3. 使用Dev Tools(如下)
    這裡寫圖片描述

使用elasticsearch API實現CRUD

  1. 新增索引

    
    #指定配置建立索引lib
    
    
    #lib為索引名稱
    
    
    #"number_of_shards":3  分片數量為3
    
    
    #"number_of_replicas":0 備份數量為0
    
    PUT /lib/  
    {
        "settings":{
            "index"
    :{ "number_of_shards":3, "number_of_replicas":0 } } } #使用預設配置建立索引lib2 PUT lib2
  2. 查詢索引配置

    
    #查詢lib的設定
    
    GET /lib/_settings
    
    
    #結果如下
    
    {
      "lib": {
        "settings": {
          "index": {
            "creation_date":     "1534492852386",
                "number_of_shards"
    : "3", "number_of_replicas": "0", "uuid": "XvO3MPUdQ-SMu-o VZCGAWw", "version": { "created": "6030299" }, "provided_name": "lib" } } } } #查詢lib2設定 GET /lib2/_settings #結果如下,可以看出,預設分片為5個,備份1個 { "lib2": { "settings": { "index"
    : { "creation_date": "1534492911101", "number_of_shards": "5", "number_of_replicas": "1", "uuid": "8DzDTWeeSHujmvb RGAHg_g", "version": { "created": "6030299" }, "provided_name": "lib2" } } } } #查詢所有索引的配置 GET _all/_settings
  3. 新增文件

    
    #指定新增文件id為1
    
    
    #type為user,1是文件編號
    
    PUT /lib/user/1      
    {
        "first_name":"Jane",
        "last_name":"Smith",
        "age":32,
        "about":"I like to collect rock albums",
        "interests":["music"]
    }
    
    
    #結果
    
    {
      "_index": "lib",
      "_type": "user",
      "_id": "1",
      "_version": 1,
      "result": "created",
      "_shards": {
        "total": 1,
        "successful": 1,
        "failed": 0
      },
      "_seq_no": 0,
      "_primary_term": 1
    }
    
    
    #不指定id新增文件
    
    POST /lib/user/
    {
        "first_name":"Douglas",
        "last_name":"Fir",
        "age":23,
        "about":"I like to build cabinets",
        "interests":["forestry"]
    }
    
    
    #結果如下,id由elasticsearch生成
    
    {
      "_index": "lib",
      "_type": "user",
      "_id":   "mJP7RmUBx8NiZecJ2McD"  ,
      "_version": 1,
      "result": "created",
      "_shards": {
        "total": 1,
        "successful": 1,
        "failed": 0
      },
      "_seq_no": 0,
      "_primary_term": 1
    }
  4. 文件的查詢

    
    #查詢id為1的文件
    
    GET /lib/user/1
    
    
    #結果
    
    {
      "_index": "lib",
      "_type": "user",
      "_id": "1",
      "_version": 1,
      "found": true,
      "_source": {
        "first_name":"Jane",
        "last_name":"Smith",
        "age": 32,
        "about": "I like to collect rock albums",
        "interests": [
          "music"
        ]
      }
    }
    
    
    #查詢不指定id新增的文件
    
    GET /lib/user/mJP7RmUBx8NiZecJ2McD
    
    
    #結果
    
    {
      "_index": "lib",
      "_type": "user",
      "_id":   "mJP7RmUBx8NiZecJ2McD"  ,
      "_version": 1,
      "found": true,
      "_source": {
        "first_name":"Douglas",
        "last_name": "Fir",
        "age": 23,
        "about": "I like to build cabinets",
        "interests": [
          "forestry"
        ]
      }
    }
    
    
    #指定查詢的欄位
    
    GET /lib/user/1?_source=age,about
    
    //結果
    {
      "_index": "lib",
      "_type": "user",
      "_id": "1",
      "_version": 1,
      "found": true,
      "_source": {
        "about": "I like to collect rock albums",
        "age": 32
      }
    }
  5. 更新文件

    
    #直接覆蓋原文件
    
    PUT /lib/user/1 
    {
        "first_name":"Jane",
        "last_name":"Smith",
        "age":36,
        "about":"I like to collect rock albums",
        "interests":["music"]
    }
    
    
    #修改指定欄位(注意使用的是POST,推薦使用該方式)
    
    
    POST /lib/user/1/_update
    {
        "doc":{
            "age":30
        }
    }
  6. 刪除文件

    
    #刪除id為1的文件
    
    DELETE /lib/user/1
    
    //結果
    {
      "_index": "lib",
      "_type": "user",
      "_id": "1",
      "_version": 4,
      "result": "deleted",
      "_shards": {
        "total": 1,
        "successful": 1,
        "failed": 0
      },
      "_seq_no": 3,
      "_primary_term": 1
    }