Elasticsearch 快速入门

本文详细介绍了Elasticsearch的基本概念,如集群、节点、索引等,并通过实例演示了创建、查询、删除索引以及文档的操作。此外,还展示了如何使用RESTful API进行数据的增删改查、条件查询、排序、分页、聚合统计等高级查询功能,是学习Elasticsearch操作的实用教程。
摘要由CSDN通过智能技术生成

Elasticsearch 基本操作

基本概念

集群,节点,索引,类型,文档,分片和副本

基本操作

# 查看分片大小
GET _cat/shards
# 查看集群运行状况
GET _cat/health?v
# 查看集群中的节点列表
GET _cat/nodes?v
# 查询集群中的索引
GET _cat/indices?v

elasticsearch支持restApi调用,执行http请求即可执行方法调用

索引(index)

创建索引

新建一个index:goods

curl -X PUT 'localhost:9200/goods'

对应的elasticsearch语法为:

# 创建索引(goods)
PUT /goods

响应为:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "goods"
}
查询index
curl -X GET 'localhost:9200/goods'
删除index
curl -X DELETE 'localhost:9200/goods'

document(文档,数据)

新增数据

向指定的/goods/book发送请求

  • goods:index
  • book:type
  • 1:id
PUT /goods/book/1
{
  "title":"elastic",
  "name":"elasticsearch学习笔记文档记录",
  "img":"img3.pic.com/56/8555.jpg",
  "price":"253.00"
}

指定id创建文档,id就是自定义的,如果不指定id,则会随机生成一个。

不指定id,创建数据

POST /goods/book
{
  "title":"elastic2",
  "name":"elasticsearch学习笔记文档记录",
  "img":"img3.pic.com/56/8555.jpg",
  "price":"253.00"
}

响应:

{
  "_index" : "goods",
  "_type" : "book",
  "_id" : "YU10yHoBrDuES6WZBDrL",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 1,
  "_primary_term" : 1
}

添加数据时,如果index不存在,就会创建对应的index

查看记录
curl localhost:9200/goods/book/1?pretty=true
{
  "_index" : "goods",
  "_type" : "book",
  "_id" : "1",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "title" : "elastic",
    "name" : "elasticsearch学习笔记文档记录",
    "img" : "img3.pic.com/56/8555.jpg",
    "price" : "253.00"
  }
}
删除数据
curl -X DELETE localhost:9200/goods/book/1
更新数据
PUT /goods/book/1
{
  "title":"elastic33",
  "name":"elasticsearch学习笔记文档记录",
  "img":"img3.pic.com/56/8555.jpg",
  "price":"253.00"
}

{
  "_index" : "goods",
  "_type" : "book",
  "_id" : "1",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 4,
  "_primary_term" : 1
}

变更后,_version会+1

查询所有记录
curl localhost:9200/goods/book/_search
条件查询(全查)
GET /dang-dang-goods/_search
{
  "query": {"match_all": {}}
}
分页查询
  • size 查询数量
  • from 偏移量

如果不指定size,默认为10

GET /goods/_search
{
  "query": {"match_all": {}},
  "from": 10, 
  "size": 5
}
排序

text类型不支持排序

对price进行倒排序

GET /goods/_search
{
  "query": {"match_all": {}},
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    }
  ], 
  "from": 0, 
  "size": 10
}
返回特定字段

类似于SQL中的 SELECT sku,title FROM ...

只查询title,sku

GET goods/_search
{
  "query": {"match_all": {}},
  "_source": ["title","sku"]
}
条件查询(匹配)

查询title中包含背包的数据

GET /goods/_search
{
  "query": {"match": {
    "title": "背包"
  }}
}

查询title中包含背包或spring的数据

GET /goods/_search
{
  "query": {"match": {
    "title": "背包 spring"
  }}
}
布尔查询 (&&)

sku=1822023502 && price=¥79.00

GET /goods/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {"sku":"1822023502"}},
        {"match": {"price":"¥79.00"}}
      ]
    }
  }
}
布尔查询 (||)

sku=1822023502 || price=¥79.00

GET /goods/_search
{
  "query": {
    "bool": {
      "should": [
        {"match": {"sku":"1822023502"}},
        {"match": {"price":"¥79.00"}}
      ]
    }
  }
}
布尔查询 (!)

查询 !( sku=1822023502) && !(price=¥79.00)

GET /goods/_search
{
  "query": {
    "bool": {
      "must_not": [
        {"match": {"sku":"1822023502"}},
        {"match": {"price":"¥79.00"}}
      ]
    }
  }
}
条件查询(范围过滤)

查询price>100的数据

GET /goods/_search
{
  "query": {
    "bool": {
      "must": [
        {"match_all": {}}
      ],
      "filter": [
        {
         "range": {
           "price": {
             "gte": 100
           }
         } 
        }
      ]
    }
  }
}
统计查询(分组)

根据price分组

GET /goods/_search
{
  "size": 2,
  "aggs": {
    "group_by_price": {
      "terms": {
        "field": "price",
        "size": 100
      }
    }
  }
}
聚合查询(平均数)

按time求平均数

GET /goods/_search
{
  "size": 2,
  "aggs": {
    "group_by_price": {
      "terms": {
        "field": "price",
        "size": 100
      },
  "aggs": {
    "average_time": {
      "avg": {
        "field": "time"
      }
    }
  }
    }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值