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
}

发布了69 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Min_Monk/article/details/104516340
今日推荐