分片重要性

ES中所有数据均衡的存储在集群中各个节点的分片中,会影响ES的性能、安全和稳定性, 所以很有必要了解一下它。

分片是什么?

简单来讲就是咱们在ES中所有数据的文件块,也是数据的最小单元块,整个ES集群的核心就是对所有分片的分布、索引、负载、路由等达到惊人的速度

实列场景:
假设 IndexA 有2个分片,我们向 IndexA 中插入10条数据 (10个文档),那么这10条数据会尽可能平均的分为5条存储在第一个分片,剩下的5条会存储在另一个分片中。

和主流关系型数据库的表分区的概念有点类似,如果你比较熟悉关系型数据库的话。

分片的设置

创建 IndexName 索引时候,在 Mapping 中可以如下设置分片 (curl)

PUT indexName
{"settings": {"number_of_shards": 5}
}

注意:索引建立后,分片个数是不可以更改的

分片个数(数据节点计算)

分片个数是越多越好,还是越少越好了?根据整个索引的数据量来判断。
实列场景:
如果 IndexA 所有数据文件大小是300G,改怎么定制方案了?(可以通过Head插件来查看)

建议:(仅参考)1、每一个分片数据文件小于30GB2、每一个索引中的一个分片对应一个节点3、节点数大于等于分片数

根据建议,至少需要 10 个分片。

结果: 建10个节点 (Node),Mapping 指定分片数为 10,满足每一个节点一个分片,每一个分片数据带下在30G左右。
SN(分片数) = IS(索引大小) / 30
NN(节点数) = SN(分片数) + MNN(主节点数[无数据]) + NNN(负载节点数)

分片查询

我们可以指定es去具体的分片查询从而进一步的实现es极速查询。

  • randomizeacross shards
    随机选择分片查询数据,es的默认方式
  • _local
    优先在本地节点上的分片查询数据然后再去其他节点上的分片查询,本地节点没有IO问题但有可能造成负载不均问题。数据量是完整的。
  • _primary
    只在主分片中查询不去副本查,一般数据完整。
  • _primary_first
    优先在主分片中查,如果主分片挂了则去副本查,一般数据完整。
  • _only_node
    只在指定id的节点中的分片中查询,数据可能不完整。
  • _prefer_node
    优先在指定你给节点中查询,一般数据完整。
  • _shards
    在指定分片中查询,数据可能不完整。
  • _only_nodes
    可以自定义去指定的多个节点查询,es不提供此方式需要改源码。
/** * 指定分片 查询 */
@Test
public void testPreference()
{  SearchResponse searchResponse = transportClient.prepareSearch(index)  .setTypes("add")  //.setPreference("_local")  //.setPreference("_primary")  //.setPreference("_primary_first")  //.setPreference("_only_node:ZYYWXGZCSkSL7QD0bDVxYA")  //.setPreference("_prefer_node:ZYYWXGZCSkSL7QD0bDVxYA")  .setPreference("_shards:0,1,2")  .setQuery(QueryBuilders.matchAllQuery()).setExplain(true).get();  SearchHits hits = searchResponse.getHits();  System.out.println(hits.getTotalHits());  SearchHit[] hits2 = hits.getHits();  for(SearchHit h : hits2)  {  System.out.println(h.getSourceAsString());  }
}

REST API

现在我们的节点(和集群)已经启动并运行,下一步是了解如何与之通信。幸运的是,Elasticsearch提供了非常全面而强大的REST API,您可以使用它与集群进行交互。该API可以完成的几件事如下:

  • 检查您的群集,节点和索引的运行状况,状态和统计信息
  • 管理您的集群,节点以及索引数据和元数据
  • 对您的索引执行CRUD(创建,读取,更新和删除)和搜索操作
  • 执行高级搜索操作,例如分页,排序,过滤,脚本,聚合以及许多其他操作

ElasticSearch 分片(Shards)的详解相关推荐

  1. elasticsearch Analyzer 进行分词详解

    文章目录 1. Anaiysis 与 Analyzer 2. Analyzer 的组成 3. Elastocsearch 的内置分词器 3.1 使用 _analyzer Api 3.1.1 直接指定 ...

  2. ElasticSearch预警服务-Watcher详解-Schedule配置

    介绍 Watcher服务详解-定时器的设定 关于Schedule配置选择,Watcher提供了丰富的时间语法支持,采用UTC时间,来我们一起看下如何设置: 支持的设置方式: hourly:按小时周期设 ...

  3. Spring和Elasticsearch全文搜索整合详解

    Spring和Elasticsearch全文搜索整合详解 一.概述 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web ...

  4. Elasticsearch实战——function_score 查询详解

    Elasticsearch实战--function_score 查询详解 文章目录 Elasticsearch实战--function_score 查询详解 1. function_score简介 2 ...

  5. elasticsearch使用指南之Elasticsearch Document Index API详解、原理与示例

    作者介绍:<RocketMQ技术内幕>作者,中间件兴趣圈微信公众号维护者. 本节将重点介绍ElasticSearch Doucment Index API(新增索引). 从上节可知,Ela ...

  6. Elasticsearch搜索类型(SearchType)详解

    SearchType详解 es在查询时,可以指定搜索类型为 QUERY_THEN_FETCH,QUERY_AND_FEATCH,DFS_QUERY_THEN_FEATCH和DFS_QUERY_AND_ ...

  7. ElasticSearch Aggregations使用总结详解

    1.单字段情况下聚合 假设只需要对一个字段聚合,比如b字段,b字段是keyword类型,需要考虑的情况最为简单,当要对b字段聚合时语句很好写,如下即可 {"from": 0,&qu ...

  8. elasticsearch 索引存储深入详解(Elasticsearch教程03)|MVP讲堂

    作者:阿里云MVP 铭毅 往期内容: 死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招! Elasticsearch学习,请先看这一篇!(Elasticsearch教程01 ...

  9. 【elasticSearch】 _cat命令详解

    命令详解 #显示别名.过滤器.路由信息 GET _cat/aliases?v #显示每个节点分片数量.占用空间 GET _cat/allocation?v #显示索引文档数量 GET _cat/cou ...

最新文章

  1. C#中的Partial
  2. 如何查看CO凭证号码及明细
  3. Python类的封装
  4. Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。
  5. 转载一篇《Redis源码研究—哈希表》重点是如何重新哈希
  6. 实时流处理架构与技术选型
  7. iOS学习:CAShapeLayer与DrawRect对比,与UIBezierPath画图形
  8. 深入浅出MFC.pdf
  9. 加密音乐文件MGG/NCM转MP3
  10. mysql课程表设计_MySQL如何设计课程表的数据库
  11. 高德地图获取经纬度工具类
  12. 免费在线的redmine项目演示,提供免费三级域名
  13. 超级计算机 计算化学,计算化学软件使用经验-超算中心.PDF
  14. vue多页面多路由开发环境
  15. 职场神攻略:5分钟自我介绍法 快准狠!
  16. 小布老师讲座笔记(一)
  17. 返回查找对象所在列标_返回基础-这不是您要查找的对象...等等,哦,它是对象...
  18. 码率控制、VBR、CBR
  19. 《算法导论》CLRS算法C++实现(十一)P163 红黑树
  20. 数字图像matlab边缘检测(一)

热门文章

  1. 三、pytest接口自动化之pytest中setup/teardown,setup_class/teardown_class讲解
  2. requests登录知乎新版
  3. WIFI的传输距离介绍
  4. BYD精制项目除铜工艺去除铜离子
  5. 局域网访问文件提示服务器内存不足,“服务器存储空间不足”的问题
  6. 新税码不显示或者税码被人隐藏,发票校验不显示
  7. drag方法——>拖拽
  8. vsphere虚拟服务器备份,使用云祺虚拟机备份软件快速备份VMware vSphere虚拟机
  9. 如何将Jenkins基础环境迁移到Docker?
  10. 谷歌浏览器Console不显示error信息