栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch笔记

ElasticSearch笔记

ElasticSearch ES核心概念

es是面向文档的,关系型数据库和es的对比。 一切都是Json!

Relational DBElasticSearch
数据库(database)索引(indices)
表(tables)类型(types)
行(rows)文档(document)
字段(columns)字段(fields)

倒排索引

通过关键字查找id,再通过id去查找内容

ES基础操作

创建索引(使用Put请求,具有幂等性)

Put http://localhost:9200/shopping

查询索引(Get)

Get http://localhost:9200/shopping

查看所有索引

Get http://localhost:9200/_cat/indices?v

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lg6J34cz-1634526489384)(C:Usersniko.liAppDataRoamingTyporatypora-user-imagesimage-20210920111213522.png)]

删除索引 (Delete)

Delete http://localhost:9200/shopping

创建文档

Post http://localhost:9200/shopping/_doc(随机ID)

Put http://localhost:9200/shopping/_doc1001(创建指定ID,幂等性)

查询文档

Get http://localhost:9200/shopping/_search(查询全部文档)

Get http://localhost:9200/shopping/_doc/1001(主键查询)

修改文档

完全更新:

Put http://localhost:9200/shopping/_doc/1001
{
    "title":"苹果手机"
}

局部更新:

Post http://localhost:9200/shopping/_update/1001
{
    "doc":{
        "title":"华为手机"
    }
}

删除文档

Delete http://localhost:9200/shopping/_doc/1001

ES-JavaAPI
        //插入文档
        IndexRequest request = new IndexRequest();
        request.index("user").id("1001");
        User user = new User("niko","20");
        ObjectMapper mapper = new ObjectMapper();
        String s = mapper.writevalueAsString(user);
        request.source(s, XContentType.JSON);
        IndexResponse response = esClient.index(request, RequestOptions.DEFAULT);

        //查询文档
        GetRequest request = new GetRequest();
        request.index("user").id("1001");
        GetResponse response = esClient.get(request, RequestOptions.DEFAULT);

        //删除文档
        DeleteRequest request = new DeleteRequest();
        request.index("user").id("1001");
        esClient.delete(request, RequestOptions.DEFAULT);


        //关闭客户端
        esClient.close();
    }
}
ES进阶 索引(Index)

一个索引就是一个拥有几分相似特征的文档的集合

精髓:一切设计都是为了提高搜索的性能

类型(Type) 文档(document)

一个文档是一个可被索引的基础信息单元,也就是一条数据

在一个index里面,你可以存储任意多的文档。

文档以JSON格式来表示

字段(Field)

相当于数据表的字段,对文档数据根据不同属性进行的分类标识

映射(Mapping)

mapping是处理数据的方式和规则方面做一些限制,如:某个字段的数据类型、默认值、分析器、是否被索引等。

分片(Shards)

ES可以将索引划分为多份,每一份就称之为分片。

使用分片的原因:

  1. 允许你水平分割、扩展你的内容容量。
  2. 允许你在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量。
副本(Replicas)

ES允许你创建分片的一份或多份拷贝,这些拷贝叫做复制分片(副本)

使用副本的原因:

  1. 在分片/节点失败的情况下,提供了高可用性。因为这个原因,注意到复制分片从不与原分片置于同一节点上是非常重要的。
  2. 扩展你的搜索量/吞吐量,因为搜索可以在所有的副本上并行运行。
分配(Allocation)

​ 将分片分配给某个节点的过程,包括分配主分片或者副本。如果是副本,还包含从主分片复制数据的过程。这个过程是由master节点完成的。

路由计算

路由计算:hash(id)%主分片数量(3) =【0,1,2】

路由控制:用户可以访问任何一个节点获取数据,这个节点称之为协调节点。

存取数据是根据路由计算得出数据应该存在哪一个节点。

数据写流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ec7VhbOJ-1634526489390)(C:Usersniko.liAppDataRoamingTyporatypora-user-imagesimage-20210927100530783.png)]

  1. 客户端请求集群节点(任意),-协调节点
  2. 协调节点将请求转换到指定的节点
  3. 主分片需要将数据保存
  4. 主分片需要将数据发送给副本
  5. 副本保存后,进行反馈
  6. 主分片进行反馈
  7. 客户端获取反馈
数据读流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QpMa0r0A-1634526489392)(C:Usersniko.liAppDataRoamingTyporatypora-user-imagesimage-20210927101607011.png)]

  1. 客户端发送查询请求到协调节点
  2. 协调节点计算数据所在的分片以及全部的副本位置
  3. 为了能够负载均衡,可以轮询所有节点
  4. 将请求转发给具体的节点
  5. 节点返回查询结果,将结果反馈给客户端
数据更新流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EMHcZq04-1634526489394)(C:Usersniko.liAppDataRoamingTyporatypora-user-imagesimage-20210927102019974.png)]

A-1634526489392)]

  1. 客户端发送查询请求到协调节点
  2. 协调节点计算数据所在的分片以及全部的副本位置
  3. 为了能够负载均衡,可以轮询所有节点
  4. 将请求转发给具体的节点
  5. 节点返回查询结果,将结果反馈给客户端
数据更新流程

[外链图片转存中…(img-EMHcZq04-1634526489394)]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336179.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号