ElasticSearch 入门 - 文档和索引 API

一、索引相关基础操作

1. 获取所有的索引
GET /_cat/indices?v
2. 创建一个名叫 customer 的索引
PUT /customer?pretty
3. 删除名 customer 的索引
DELETE /customer?

二、文档相关基础操作

1. 向 customer 索引中加入一个文档 ( 指出 id )
PUT /customer/_doc/1?pretty
{
  "name": "hahaha"
}
2. 向customer索引中加入一个文档 ( 不指出id )
POST /customer/_doc?pretty
{
  "name": "Jane Doe"
}
3. 查看一下 customer 里面为 1 的文档
GET /customer/_doc/1?pretty
4. 删除 _id 为 2 的文档
DELETE /customer/_doc/1?pretty
5. 更改 _id 为 1 的文档的 name
POST /customer/_doc/1/_update?pretty
{
  "doc": {"name": "Selina" }
}
6. 更改 _id 为 1 的文档的 name 和 age
POST /customer/_doc/1/_update?pretty
{
  "doc": {"name": "Jane Doe", "age": 20}
}
7. 在一次批量操作里索引两个文档
POST /customer/_doc/_bulk?pretty
{"index": {"_id": "1"}}
{"name": "Selina update"}
{"index": {"_id": "2"}}
{"name": "Jane Doe"}
8. 一次批量操作里修改 1,删除 2,任何一个操作失败都将继续执行
POST /customer/_doc/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": {"name": "Selina update Sunny"}}
{"delete":{"_id": "2"}}

三、搜索相关操作

1. 搜索 bank 索引里搜索所有,按 account_number 降序
1) request API方式
GET /bank/_search?q=*&sort=account_number:desc&pretty
2) request body方式
GET /bank/_search
{
  "query": { "match_all": {} },
  "sort": [
    {"account_number": "asc"}
  ]
}
2. match_all 表示指定索引里对所有文件进行搜索,from 如果未指定默认为0,搜索从 10 开始以后的 10 个文档
GET /bank/_search
{
  "query": { "match_all": {}},
  "from":10,
  "size":10,
  "sort":{"balance":"desc"}}
}
3. 返回 address 包含 Mill 或 lane
GET /bank/_search
{
  "query":{"match": {
    "address": "Mill lane"
  }}
}
4. 返回 address 包含 ‘mill lane’ 这个短语
GET /bank/_search
{
  "query": {"match_phrase": {
    "address": "mill lane"
  }}
}
  • bool must表示子句都必须为true才算被匹配到
  • bool should表示子句任何一个为true就算被匹配到 bool
  • must_not表示两个子句都为false才算被匹配到
GET /bank/_search
{
  "query":{
    "bool": {
      "must_not": [
        {"match": {"address": "mill"}}, {"match": {"address": "lane"}}
      ]
    }
  }
}
5. 搜索 age 为 40,state 不为 ID 的
GET /bank/_search
{
  "query":{
    "bool": {
      "must": [
        {"match": {
          "age": "40"
        }}
      ],
      "must_not": [
        {"match": {
          "state": "ID"
        }}
      ]
    }
  }
}
6. 按 state 分组所有账户,然后按 count 递减排序返回前 10 个 size 设置为 0,表示不展示搜索命中的 hits,因为我们只想看到聚合结果
GET /bank/_search
{
  "size":0,
  "aggs":{
    "group_by_state":{
      "terms": {
        "field": "state.keyword"
      }
    }
  }
}
7. 分组后计算出每一组的 banlance 平均值
GET /bank/_search
{
  "size":0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword",
        "order": {
          "average_balance": "desc"
        }
      },
    "aggs":{
      "average_balance":{
        "avg": {
          "field": "balance"
        }
      }
    }
  }
 }
}
8. 先按年龄段分组,然后按性别分组,然后取 balance 平均数
GET /bank/_search
{
  "size": 0,
  "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"
          },
          "aggs": {
            "average_balance": {
              "avg": {
                "field": "balance"
              }
            }
          }
        }
      }
    }
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值