ElasticSearch-基本操作

索引操作

对比关系型数据库,创建索引就等同于创建数据库

创建索引

使用PUT请求创建索引,应为put具有幂等性,如果重复添加索引,会返回错误消息

http://192.168.80.10:9200/shopping

image-20210710084045176

  • acknowledged:响应结果
  • shards_acknowledged:分片结果
  • index:索引名称

查看索引

使用GET请求查看索引,_cat 表示查看的意思,indices 表示索引,是查看当前 ES服务器中的所有索引

http://192.168.80.10:9200/_cat/indices?v

image-20210710084327249

表头含义
health当前服务器健康状态: green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)
status索引打开、关闭状态
index索引名
uuid索引统一编号
pri主分片数量
rep副本数量
docs.count文档数量
docs.deleted文档删除状态(逻辑删除)
store.size主分片和副分片整体占空间大小
pri.store.size主分片占空间大小

使用GET,指定索引名称,查看单个索引

http://192.168.80.10:9200/shopping

image-20210710084817905

  • shopping:索引名
  • aliases:别名
  • mappings:映射
  • settings:设置
  • index:设置 - 索引
  • creation_date:设置 - 索引 - 创建时间
  • number_of_shards:设置 - 索引 - 主分片数量
  • number_of_replicas:设置 - 索引 - 副分片数量
  • uuid:设置 - 索引 - 唯一标识
  • version:设置 - 索引 - 版本
  • provided_name:设置 - 索引 - 名称

删除索引

使用DELETE,指定索引名称,删除单个索引

http://192.168.80.10:9200/shopping

image-20210710085207251

文档操作

文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式

创建文档

使用POST,指定索引名称,_doc,发送请求的方式必须为 POST,不能是 PUT,否则会发生错误,如果没有指定数据的唯一性标识ID,默认ES会随机生成,可以通过插入文档的时候,指定唯一性标识,如果增加数据时明确数据主键,那么请求方式也可以为 PUT

http://192.168.80.10:9200/shopping/_doc/1(指定唯一标识)

image-20210710085429478

  • _index:索引
  • type:类型-文档
  • id:唯一标识
  • _version:版本
  • result:结果
  • _shards:分片
  • total:分片 - 总数
  • successful:分片 - 成功
  • failed:分片 - 失败

查看文档

ES 服务器发 GET 请求 ,指定文档的唯一性标识,查看文档信息

http://192.168.80.10:9200/shopping/_doc/1

image-20210710090249131

  • _index:索引
  • type:文档类型
  • found:查询结果
  • _source:文档源信息

修改文档

和新增文档一样,如果请求体变化,会将原有的数据内容覆盖

http://192.168.80.10:9200/shopping/_doc/1
{
 "title":"华为手机",
 "category":"华为",
 "price":3999.00
}

image-20210710090540674

  • _version:版本
  • result:结果

修改字段

修改数据时,也可以只修改某一给条数据的局部信息,发送POST请求

http://192.168.80.10:9200/shopping/_doc/1
{
    "doc": {
        "price": 5999.00
    }
}

删除文档

向 ES 服务器发 DELETE 请求,删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)

http://192.168.80.10:9200/shopping/_doc/1

image-20210710091713123

  • _version:对数据的操作,都会更新版本

  • result:结果deleted表示数据被标记为删除

条件删除文档

一般删除数据都是根据文档的唯一性标识进行删除,实际操作时,也可以根据条件对多条数据进行删除_delete_by_query

http://192.168.80.10:9200/shopping/_doc/_delete_by_query
{
    "query": {
        "match": {
            "price": 4000.00
        }
    }
}

image-20210710115923772

  • took:耗时
  • timed_out:是否超时
  • total:总数
  • deleted:删除数量

映射操作

有了索引库,等于有了数据库中的 database。而索引库(index)中的映射,类似于数据库(database)中的表结构(table)。 创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。

映射数据说明

字段名:任意填写,下面指定许多属性,例如:title、subtitle、images、price

type:类型,Elasticsearch 中支持的数据类型非常丰富,如

  • String 类型:text可分词,keyword不可分词,数据会作为完整字段进行匹配
  • Numerical:数值类型,分两类:基本数据类型:long、integer、short、byte、double、float、half_float,浮点数的高精度类型:scaled_float
  • Date:日期类型
  • Array:数组类型
  • Object:对象

index:是否索引,默认为 true,也就是说不进行任何配置,所有字段都会被索引

  • true:字段会被索引,则可以用来进行搜索
  • false:字段不会被索引,不能用来搜索

store:是否将数据进行独立存储,默认为 false

  • 原始的文本会存储在_source里面,默认情况下其他提取出来的字段都不是独立存储 的,是从_source 里面提取出来的。当然也可以独立的存储某个字段,只要设置 "store": true即可,获取独立存储的字段要比从_source 中解析快得多,但是也会占用 更多的空间

analyzer:分词器,ik_max_word 即使用 ik 分词器

创建映射

向 ES 服务器发 PUT 请求

http://192.168.80.10:9200/student/_mapping
{
    "properties": {
        "name": {
            "type": "text",
            "index": true
        },
        "sex": {
            "type": "text",
            "index": false
        },
        "age": {
            "type": "long",
            "index": false
        }
    }
}

image-20210710120525557

查看映射

向 ES 服务器发 GET 请求

http://192.168.80.10:9200/student/_mapping

image-20210710121148591

索引映射关联

向 ES 服务器发 PUT 请求

http://192.168.80.10:9200/student
{
    "settings": {},
    "mappings": {
        "properties": {
            "name": {
                "type": "text",
                "index": true
            },
            "sex": {
                "type": "text",
                "index": false
            },
            "age": {
                "type": "long",
                "index": false
            }
        }
    }
}

image-20210710121542628

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值