ES基础知识

ES基础

1. 核心概念

  • Near Realtime(NRT):近实时,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级

  • Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常

  • Node:节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群

  • Document&field:文档,es中的最小数据单元,一个document可以是一条客户数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。

  • Index:索引,包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个index包含很多document,一个index就代表了一类类似的或者相同的document。比如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。

  • Type:类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field,比如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type。

  • _id元数据:代表document的唯一标识,与index和type一起,可以唯一标识和定位一个document

  • shard:单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。

2. 基础API

  • 管理和使用ElasticSearch服务时,常用的HTTP动词
    - GET 请求:获取服务器中的对象 相当于SQL的Select命令
    - POST 请求:在服务器上更新对象 相当于SQL的Update命令
    - PUT 请求:在服务器上创建对象 相当于SQL的Create命令
    - DELETE 请求:删除服务器中的对象 相当于SQL的Delete命令
    - HEAD 请求:仅仅用于获取对象的基础信息

3. ES对象模型与关系型数据库模型对比

  • 索引(Index):相当于数据库,用于定义文档类型的存储;在同一个索引中,同一个字段只能定义一个数据类型;

  • 文档类型(Type):相当于关系表,用于描述文档中的各个字段的定义;不同的文档类型,能够存储不同的字段,服务于不同的查询请求;

  • 文档(Document):相当于关系表的数据行,存储数据的载体,包含一个或多个存有数据的字段;

  • 字段(Field):文档的一个Key/Value对;

  • 词(Term):表示文本中的一个单词;

  • 标记(Token):表示在字段中出现的词,由该词的文本、偏移量(开始和结束)以及类型组成;

4. ES配置集群

  • 配置方式:直接修改conf/elasticsearch.yml/cluster-name:#默认即为elasticsearch,cluster-node:""

  • 查询集群即使用ES的REST API可实现功能
    - 管理集群,节点,索引数据和元数据;
    - 执行创建,读取,更新和删除操作,以及根据索引查询;
    - 执行更深入的操作,比如分页、排序、过滤、脚本、faceting、聚合等。

  • eg.查询集群的健康状况:

    • GET /_cat/health?v
    • red:不是所有索引的primary shard都是active状态的,部分索引有数据丢失了
    • yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态
    • green:每个索引的primary shard和replica shard都是active状态的

5. ES分布式搜索

  • 缺点/问题:1).返回数据量问题,远远大于用户请求;2).返回数据排名都是基于自己分片的数据进行打分计算
  • 解决:在搜索的时候指定 search type。
  • 搜索类型(SearchType类型):
  • query and fetch :搜索最快,但返回数据量过多,数据排名不准确
  • query then fetch( es 默认的搜索方式):返回的数据量是准确的,性能一般,并且数据排名不准确
  • DFS query and fetch:数据排名准确,性能一般,返回的数据量不准确
  • DFS query then fetch:返回的数据量是准确的,数据排名准确,但性能相比最差
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值