1. 文档
  • ElasticSearch是面向文档的,文档是所有可搜索数据的最小单位
  • 文档会被序列化成JSON格式,保存在ES中
  • 每个文档都有一个unique ID
#查看前10条文档,了解文档格式
POST kibana_sample_data_ecommerce/_search
{
}
1.1 文档元数据
{
"_index" : "kibana_sample_data_ecommerce", // 文档所属索引名
"_type" : "_doc", // 文档所属的类型
"_id" : "LY5Jc4IBJLxforJ4rVB5", // 文档唯一ID
"_score" : 1.0, // 相关性打分
"_source" : { // 文档的原始json数据
....
}
}
2. 索引

索引是文档的容器,是一类文档的集合

#查看索引相关信息
GET kibana_sample_data_ecommerce
{
"kibana_sample_data_ecommerce" : {
"aliases" : { },
// mapping定义文档的字段信息
"mappings" : {
"properties" : {
"category" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword"
}
}
},
// settings索引配置信息
"settings" : {
"index" : {
"routing" : {
"allocation" : {
"include" : {
"_tier_preference" : "data_content"
}
}
},
"number_of_shards" : "1", // 分片数为1
"auto_expand_replicas" : "0-1",
"provided_name" : "kibana_sample_data_ecommerce",
"creation_date" : "1659791584389",
"number_of_replicas" : "0", // 副本数0
"uuid" : "iH1-4-krQA6tda3W8Psmbw",
"version" : {
"created" : "7110299"
}
}
}
}
}
}

以下为基本操作

// 查看索引的文档总数
GET kibana_sample_data_ecommerce/_count
// 查看indices
GET _cat/indices/kibana*?format=json
// 查看状态为绿的索引
GET _cat/indices?health=green&format=json
// 按照文档个数排序
GET /_cat/indices?s=docs.count:desc&format=json
// 查看具体的字段
GET /_cat/indices/kibana*?h=health,index,pri,rep,docs.count,mt&format=json
// 索引占用内存查看
GET /_cat/indices?v&h=i,tm&s=tm:desc
3.节点
  • 节点是一个ElasticSearch的实例
  • 每个节点都有一个名字,通过配置文件配置或启动时-E node.name=node1指定
  • 每个节点启动后,会分配一个UID,保存在data目录下
3.1 Master-eligible Nodes和Master Nodes
  • 每个节点启动后,默认就是一个Master-eligible节点,可以设置node.master=false禁止
  • Master-eligible节点可以参加主节点选举称为Master节点
  • 每个节点保存了集群的状态,只有Master节点可以修改集群状态:
    • 所有的节点信息
    • 所有的索引及其相关的Mapping和Setting信息
    • 分片的路由信息
3.2 Data Node和Coordinating Node
  • Data Node: 可以保存数据的节点,负责保存分片数据
  • Coordinating Node:负责接收client的请求,将请求分发到合适的节点,将结果进汇集,每个节点默认起到协调节点作用
4. 分片
  • 主分片,用于解决数据水平扩展的问题。通过主分片,可以将数据分布到集群内的所有节点上

    • 一个分片是一个运行的Lucene的实例
    • 主分片数在创建索引时指定,后续不允许修改,除非reindex
  • 副本,用于解决数据的高可用问题。副本分片是主分片的拷贝
    • 副本分片数,可以动态调整
    • 增加副本数,可以一定程度提高服务的可用性(读取的吞吐)

ES7.0开始,默认主分片设置为1,解决了over-sharding问题:

  • 影响搜索结果的相关性打分,影响统计结果的准确性
  • 单个节点分配过多分片,会导致资源浪费,同时也会影响性能
5. 集群相关查询示例

假设你启动了集群,如果没有多台机器,可以参考

win10下docker部署ES集群代码

# 查看集群节点信息
GET _cat/nodes?v
# 查看集群节点详细信息
GET /_nodes/es-node1,es-node2
# 查看节点指定字段信息
GET /_cat/nodes?v&h=id,ip,port,v,m
# 查看集群健康状态
GET _cluster/health
GET _cluster/health?level=shards
GET /_cluster/health/kibana_sample_data_ecommerce,kibana_sample_data_flights
GET /_cluster/health/kibana_sample_data_flights?level=shards
# 查看集群元数据等信息
GET /_cluster/state
#cluster get settings
GET /_cluster/settings
GET /_cluster/settings?include_defaults=true
# 查看分片情况
GET _cat/shards?v
GET _cat/shards?v&h=index,shard,prirep,state,unassigned.reason

欢迎关注公众号算法小生沈健的技术博客

4.ElasticSearch系列之基本概念的更多相关文章

  1. ElasticSearch 2 (28) - 信息聚合系列之高层概念

    ElasticSearch 2 (28) - 信息聚合系列之高层概念 摘要 和查询表达式(query DSL)一样,聚合也有一种可编辑的语法:可以根据我们的需要混合以及匹配使用独立的功能单元.这也就是 ...

  2. RxJava系列2(基本概念及使用介绍)

    RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJava系列4(过滤操作符) RxJava系列5(组合操作符) RxJava系列6(从微观角 ...

  3. 【分布式搜索引擎】Elasticsearch中的基本概念

    一.Elasticsearch中的基本概念 以下概念基于这个例子:存储员工数据,每个文档代表一个员工 1)索引(index)  在Elasticsearch中存储数据的行为就叫做索引(indexing ...

  4. ElasticSearch 2 (7) - 基本概念

    ElasticSearch 2 (7) - 基本概念 摘要 ElasticSearch的一些基本核心概念,理解这些概念有助于ElasticSearch的学习 准实时NRT(Near Realtime) ...

  5. 第三百六十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念

    第三百六十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念 elasticsearch的基本概念 1.集群:一个或者多个节点组织在一起 2.节点 ...

  6. 三十九 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念

    elasticsearch的基本概念 1.集群:一个或者多个节点组织在一起 2.节点:一个节点是集群中的一个服务器,由一个名字来标识,默认是一个随机的漫微角色的名字 3.分片:将索引(相当于数据库)划 ...

  7. Elasticsearch之重要核心概念(cluster(集群)、shards(分配)、replicas(索引副本)、recovery(据恢复或叫数据重新分布)、gateway(es索引的持久化存储方式)、discovery.zen(es的自动发现节点机制机制)、Transport(内部节点或集群与客户端的交互方式)、settings(修改索引库默认配置)和mappings)

    Elasticsearch之重要核心概念如下: 1.cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是 ...

  8. net必问的面试题系列之基本概念和语法

    上个月离职了,这几天整理了一些常见的面试题,整理成一个系列给大家分享一下,机会是给有准备的人,面试造火箭,工作拧螺丝,不慌,共勉. 1.net必问的面试题系列之基本概念和语法 2.net必问的面试题系 ...

  9. Elasticsearch核心技术(2)--- 基本概念(Index、Type、Document、集群、节点、分片及副本、倒排索引)

    Elasticsearch核心技术(2)--- 基本概念 这篇博客讲到基本概念包括: Index.Type.Document.集群,节点,分片及副本,倒排索引. 一.Index.Type.Docume ...

随机推荐

  1. Spring 常见面试题总结 | JavaGuide

    首发于 JavaGuide 在线网站:Spring 常见面试题总结 最近在对 JavaGuide 的内容进行重构完善,同步一下最新更新,希望能够帮助你. Spring 基础 什么是 Spring 框架 ...

  2. 简单学习一下ibd数据文件解析

    来源:原创投稿 作者:花家舍 简介:数据库技术爱好者. GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 简单学习一下数据文件解析 这是尝试使用Golang语言简单解析My ...

  3. php里的$this的 含义

    $this 的含义是表示    实例化后的 具体对象! 我们一般是先声明一个类,然后用这个类去实例化对象! 但是,当我们在声明这个类的时候,想在类本身内部使用本类的属性或者方法.应该怎么表示呢? 例如 ...

  4. SpingBoot解析Excel数据

    前言 在最近的工作中,由于导入模板除了前三列(姓名.手机号.实发工资)固定:其余的列不固定,并且可以做到两个模板的数据都能够正常入库进行对应业务处理. 一.数据模板数据展示: (1)模板一 (2)模板 ...

  5. 用RocketMQ这么久,才知道消息可以这样玩

    在上一章节中,我们讲解了RocketMQ的基本介绍,作为MQ最重要的就是消息的使用了,今天我们就来带大家如何玩转MQ的消息. 消息中间件,英文Message Queue,简称MQ.它没有标准定义,一般 ...

  6. 你必须学UML之理论篇

    1.前言 对于当前社会背景下从事软件开发的工作者而言,"写代码"实际上并不是唯一的工作.特别在一些中小型的企业当中,这些企业往往对于开发者的要求,不单单停留在写代码完成相应功能上, ...

  7. 「学习笔记」斜率优化dp

    目录 算法 例题 任务安排 题意 思路 代码 [SDOI2012]任务安排 题意 思路 代码 任务安排 再改 题意 思路 练习题 [HNOI2008]玩具装箱 思路 代码 [APIO2010]特别行动 ...

  8. 第九十九篇:JS闭包

    好家伙,总是要来的,去面对那些晦涩难懂的原理,它就在那里,等着我去搞定它 首先我要去补充一些最基本的概念, 1.什么是内存? 新华字典永远的神, 但这个解释显然不够   去看看百度百科: 内存: CP ...

  9. 没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

    你好呀,我是喜提七天居家隔离的歪歪. 这篇文章要从一个奇怪的注释说起,就是下面这张图: 我们可以不用管具体的代码逻辑,只是单单看这个 for 循环. 在循环里面,专门有个变量 j,来记录当前循环次数. ...

  10. 前端必读3.0:如何在 Angular 中使用SpreadJS实现导入和导出 Excel 文件

    在之前的文章中,我们为大家分别详细介绍了在JavaScript.React中使用SpreadJS导入和导出Excel文件的方法,作为带给广大前端开发者的"三部曲",本文我们将为大家 ...