Elasticsearch 基础语法总结

Elasticsearch 语法总结

一、Elasticsearch 简介与启动

在 Elasticsearch 中,包含多个索引(Index),相应的每个索引可以包含多个类型(Type),这些不同的类型每个都可以存储多个文档(Document),每个文档又有多个属性。一个索引索引 (index) 类似于传统关系数据库 (如 mysql) 中的一个数据库,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indices 或 indexes。类型 (Type) 相当于传统关系型数据库的表,而每一个文档就相当于传统关系型数据库的表中的一行数据。
下载好 es 后,在 bin 目录下双击运行 elasticsearch.bat,访问 http://localhost:9200,如下结果表示 es 启动成功。
在这里插入图片描述
开启 es 后占用了 9200 和 9300 两个端口,其中 9200 是 es 对外提供 restful 接口的端口,9300 是内部端口。

二、Elasticsearch 基础语法

1、添加数据
PUT /megacorp/employee/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}

返回以下信息,表示创建成功。

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

其中,_index 为索引名称,_type 为类型名称,_version 为该文档的版本号,初始为 1,每次修改该文档时 _version 增加 1,_seq_no 为索引的版本号,每次修改了索引下的文档,被修改的文档的 _seq_no 和索引当前的 _seq_no 都被更新为修改前索引 _seq_no + 1。
注意: 当请求方法为 POST,且修改前后数据完全一样时,文档的 _version 和 _seq_no 都不改变。这种请求方式的写法为:
POST /${index}/${type}/${_id}/_update
请求体格式为:

{
"doc":{
    "first_name": "Bob"
	}
}

_id 为添加数据时自己设置的,如上 PUT /megacorp/employee/1 中的 1 就是自己设置的字段 _id,也可以在添加字段的时候不设置 _id 值,这时系统会默认返回一个字符串类型的 _id 值。
注意: 此时请求方式不能为 PUT,应当为 POST,否则会返回 405 报错。

2、查询数据

查询索引为 megacorp 下的全部文档。

GET /megacorp/_search

查询索引为 megacorp 下的类型名为 employee 的全部文档。

GET /megacorp/employee/_search

根据 _id 来准确查询文档。

GET /megacorp/employee/1

为查询方法加上参数,参数的 key 和 value 之间用 : 分隔。

GET /megacorp/employee/_search?q=last_name:Smith

将查询参数放在请求体中。

GET /megacorp/employee/_search
{
    "query" : {
        "match" : {
            "last_name" : "Smith"
        }
    }
}
3、更新数据

更新数据和插入数据又可以用 PUT 和 POST 两种请求方式,且两种请求方式都可以用一下格式来更新数据:

  • PUT/POST /megacorp/employee/_id
    请求方法体同插入数据, 逻辑上等同于将用数据将原数据覆盖掉。如:
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}

POST 还可以通过 POST /megacorp/employee/_id/_update
格式来修改数据,此时请求体格式应当为:

{
"doc":{
    "first_name": "Taoqiang"
     }
}

将要修改的字段和新的值放在 doc 中,多个字段用逗号分隔。

4、删除数据
  • 删除整个索引的数据
    DELETE /megacorp
  • 删除指定 _id 的数据
    DELETE /megacorp/employee/_id
    正确删除后返回以下类型数据:
   {
    "_index": "megacorp",
    "_type": "employee",
    "_id": "5",
    "_version": 2,
    "result": "deleted",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 11,
    "_primary_term": 1
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值