ElasticSearch基本概念和简单CRUD

ElasticSearch基础

Lucene简介

Lucene是一种高性能、可伸缩的信息搜索(IR)库,在2000年开源,最初由鼎鼎大名的Doug Cutting开发,是基于Java实现的高性能的开源项目。Lucene采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读写时几乎完全避免了锁的出现,大大提升了读写性能。

Elasticsearch基于lucene,隐藏其复杂性,并提供简单易用的restful API接口、java API接口。所以理解ES的关键在于理解lucene的基本原理。

ElasticSearch中的名称

  • Cluster【集群】: 一群物理机构成的 elastic 服务群, 每台机器是一节点

  • physical-shards【物理分片】: 每个分片实际上是一个独立的索引,底层是一个 Lurence的实例。类比mysql,相当于水平分表

  • Index【索引】 : 相当于一个命名空间,在关系型数据数据库中,相当于 一个 database

  • Type 【类型】 : 完全相同字段名的json 构成一个type 。类比mysql, 相当于不同的数据表 , 但是不同的 type 应该有相似的结构。 性质完全不同的数据(比如products和users)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。

// 两个不同的类型

//type: user
{
  "id": 1,
  "name":"xxx"
}

// type  product
{
  "price":1.00,
  "name": "书"
}
  • Replicas【副本】: 所有文档的复制。 类比:mysql 相当于从库

  • Document【文档】:一个JSON 对象。类比myssql, 表中一条数据

  • indices :应该是 index的负数形式,表示多个索引

ElasticSearch中集群健康信息

ElasticSearch中CRUD

  1. 新增文档
    先创建一个测试所用的索引
PUT /huangliang_test_index

在该索引下新增一个是文档。

POST /huangliang_test_index/_doc
{
  "name": "huangliang",
  "sex": "男",
  "age": 26
}
  1. 查询文档 (简单查询)
    根据ElasticSearch中文档的id值进行简单的查询,相当于关系型数据库中的select * from table where id= xxx,其中id列是主键。
GET /huangliang_test_index/_doc/XZ_yrIABtyKywegQcIFd
  1. 更新文档

更新文档的方式可以使用POST和PUT两种,这两种方式产生的结果也是不相同的。

  • a.PUT方式
PUT /huangliang_test_index/_doc/XZ_yrIABtyKywegQcIFd
{
  "name": "huangliang11"
}

查询更新后的结果为:
在这里插入图片描述

  • b.POST方式
POST /huangliang_test_index/_doc/XZ_yrIABtyKywegQcIFd
{
 "name": "huangliang111",
 "sex": "男",
 "age": 26
}

查询更新后的结果为:
在这里插入图片描述
结论:使用PUT方式更新文档会对整个文档进行一个覆盖,使用POST方式更新文档则只会针对文档中的字段进行更新。
4. 删除文档
使用delete API删除文档

DELETE /huangliang_test_index/_doc/XZ_yrIABtyKywegQcIFd

5.删除索引
同样使用delete API删除索引

DELETE /huangliang_test_index
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值