大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查

简介: 大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop(已更完)

HDFS(已更完)

MapReduce(已更完)

Hive(已更完)

Flume(已更完)

Sqoop(已更完)

Zookeeper(已更完)

HBase(已更完)

Redis (已更完)

Kafka(已更完)

Spark(已更完)

Flink(已更完)

ClickHouse(已更完)

Kudu(已更完)

Druid(已更完)

Kylin(已更完)

Elasticsearch(正在更新…)

章节内容

上节我们完成了如下的内容:


Elasticsearch 的单机配置 详细流程

2e05532c1f78da68a7eb0788f6334507_c7135530e9044568aff00e01bd666dbf.png

ES简单使用

创建索引

创建 wzk_blog01 索引

http://h121.wzk.icu:9200/wzk_blog01/?pertty

返回结果如下:

{
  "acknowledged": true,
  "shards_acknowledged": true,
  "index": "wzk_blog01"
}

对应的截图如下图所示:

插入文档

http://h121.wzk.icu:9200/wzk_blog01/_doc/1?pretty
{"id": "1", "title": "What is lucene"}

https://h121.wzk.icu:9200/wzk_blog01/_doc/1?pretty
{"id": "1", "title": "What is wzk icu"}

https://h121.wzk.icu:9200/wzk_blog01/_doc/1?pretty 
{"id": "1", "title": "Apache Spark is a unified analytics engine for large-scale data processing"}

返回结果如下:

{
    "_index": "wzk_blog01",
    "_id": "1",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

查询文档

http://h121.wzk.icu:9200/wzk_blog01/_doc/_search/1?pretty
• 1

返回结果如下:

{
  "_index": "wzk_blog01",
  "_id": "1",
  "_version": 3,
  "_seq_no": 2,
  "_primary_term": 1,
  "found": true,
  "_source": {
    "id": "1",
    "title": "Apache Spark is a unified analytics engine for large-scale data processing"
  }
}

对应截图如下:

更新文档

http://h121.wzk.icu:9200/wzk_blog01/_doc/1?pretty
{"id": "1", "title": " What is elasticsearch"}

返回结果如下:

{
  "_index": "wzk_blog01",
  "_id": "1",
  "_version": 4,
  "result": "updated",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 3,
  "_primary_term": 1
}

对应截图如下:

搜索文档

http://h121.wzk.icu:9200/wzk_blog01/_doc/_search?pretty
• 1

返回结果如下:

{
  "query": {
    "match": {
      "title": "What"
    }
  }
}

对应截图如下:

架构与概念

基本简介

Elasticsearch是面向文档的(document oriented)的,这意味着它可以存储整个对象或者文档(document)。然后它不仅仅是存储,还会索引(Index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。

Elasticsearch是基于Lucene的全文检索引擎,本质也会存储和检索数据,ES中有很多概念与MySQL概念类型,可以按照关系型的数据库的经验去理解。


索引(Index):类似的数据放在一个索引,非类似的数据放不同索引,一个索引也可以理解成一个关系型数据

类型(type):代表document属于index中的哪个类别(type)也有一种说法一种type就像是数据库的表,比如dept表,user表。需要注意的是,ES每个大版本之间差别很大。

映射(mapping):mapping定义了每个字段的类型等信息,相当于关系型数据库中的表结构,常见的数据类型 text、keyword、number、array、range、boolean、date、geo_point、ip 等等类型

Elasticsearch对比传统关系行数据库如下:

8736f3f28efae78dead92e158015ec40_8204c456fdaf4e3d94f9663c88e856cb.png 核心概念

索引Index

一个索引就是一个拥有几分相似特征的文档的集合,比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引,一个索引由一个名字来标识(必须全部都是小写字母),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用这个名字,在一个集群中,可以定义任意多的索引。


类型Type

在一个索引中,你可以定义一种或多种类型,一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型,比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个引擎中,在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。当然,也可以为评论数据定义另一个类型。

高版本ES中逐渐抛弃了Type的概念,会有一个默认的 type:doc。


字段Field

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


映射mapping

mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等,这些都是映射里面可以设置的,其他就是处理ES里面数据的一些使用规则设置也叫映射,按着最优规则处理数据对性能提高很大,因为才需要建立映射,并且需要思考如何建立映射才能对性能更好。


文档 document

一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSON(JavaScript Object Notation)格式来表示,而JSON是一个到处存在的互联网数据交互格式。

在一个Index/type里面,你可以存储任意多的文档。注意,尽管一个文档,物理上存在一个索引之中,文档必须被索引/赋予一个索引的type。


近实时NRT

Elasticsearch是一个接近实时的搜索平台,这意味着,这索引锁一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒以内)


Cluster

集群(Cluster)一个Elasticsearch集群由多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识。

节点(Node):一个Elasticsearch实例就是一个Node,一台机器可以有多个实例,正常使用下每个实例都应该会部署在不同的机器上,Elasticsearch的配置文件中可以通过node.master node.data来设置节点类型

node.master 表示节点是否具有成为主节点的资格,true代表的有有资格竞选主节点,false代表的是没有资源竞选主节点

node.data 表示节点是否存储数据

  • Node节点组合:主节点+数据节点(Master+Data),即有成为主节点的资格,又存储数据
node.master: true
node.data: true

数据节点(data):

节点没有成为主节点的资格,不参与选举,只会存储数据:

node.master: false
node.data: true

客户端节点(client):

不会成为主节点,也不会存储数据,主要是针对海量请求的时候可以进行负载均衡:

node.master: false
node.data: false

分片:每个索引由一个或者多个分片,每个分片存储不同的数据,分片可以主分片(primary shard)和复制分片(replica shard),复制分片是主分片的拷贝,默认每个主分片有一个复制分片,每个索引的复制分片的数量可以动态的调整,复制分片从不与它的主分片在同一个节点上。

副本:这里指主分片的副本分片(主分片的拷贝)。提高恢复能力,当主分片挂掉的时候,某个复制分片可以变成主分片。提高性能,get和search请求既可以由主分片又可以由复制分片处理

注意:每个索引可以被分成多个分片,一个索引页可以被复制0次(意思是没有复制)或多次,一旦复制了,每个索引有了主分片(作为复制源的原来的分片)和复制分片(主分片的拷贝)之别。分片和复制的数量可以在索引创建的时候指定。在索引创建之后,你可以在任何时候动态的改变复制的数量,但你事后不能改变分片的数量。

默认情况下,Elasticsearch中的每个索引被分片5个和1个复制,这意味着,如果你的集群中至少有两个节点,你的索引将会有5个主分片和另外5个复制分片(1个完全拷贝),这样的话每个索引总共10个分片。


相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
5月前
|
存储 SQL 监控
数据中台架构解析:湖仓一体的实战设计
在数据量激增的数字化时代,企业面临数据分散、使用效率低等问题。数据中台作为统一管理与应用数据的核心平台,结合湖仓一体架构,打通数据壁垒,实现高效流转与分析。本文详解湖仓一体的设计与落地实践,助力企业构建统一、灵活的数据底座,驱动业务决策与创新。
|
6月前
|
存储 SQL 分布式计算
19章构建企业级大数据平台:从架构设计到数据治理的完整链路
开源社区: 贡献者路径:从提交Issue到成为Committer 会议演讲:通过DataWorks Summit提升影响力 标准制定: 白皮书撰写:通过DAMA数据治理框架认证 专利布局:通过架构设计专利构建技术壁垒
|
3月前
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
327 1
|
4月前
|
SQL 存储 监控
流处理 or 批处理?大数据架构还需要流批一体吗?
简介:流处理与批处理曾是实时监控与深度分析的两大支柱,但二者在数据、代码与资源上的割裂,导致维护成本高、效率低。随着业务对数据实时性与深度分析的双重需求提升,传统架构难以为继,流批一体应运而生。它旨在通过逻辑、存储与资源的统一,实现一套系统、一套代码同时支持实时与离线处理,提升效率与一致性,成为未来大数据架构的发展方向。
|
5月前
|
消息中间件 分布式计算 大数据
“一上来就搞大数据架构?等等,你真想清楚了吗?”
“一上来就搞大数据架构?等等,你真想清楚了吗?”
108 1
|
6月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
4905 9
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
5月前
|
SQL 运维 数据挖掘
森马服饰从 Elasticsearch 到阿里云 SelectDB 的架构演进之路
森马引入阿里云 SelectDB 替换原 Elasticsearch + 业务库混合架构,统一分析 16+ 核心业务,打通 BI 组件,大幅简化数据同步链路和分析系统架构。实现复杂查询 QPS 提升 400%,响应时间缩短至秒级,亿级库存流水聚合查询缩短至 8 秒内的显著收益,有效驱动森马全渠道运营效率持续增长与业务创新。
148 0
森马服饰从 Elasticsearch 到阿里云 SelectDB 的架构演进之路
|
6月前
|
架构师 Oracle 大数据
从大数据时代变迁到数据架构师的精通之路
无论从事何种职业,自学能力都显得尤为重要。为了不断提升自己,我们可以尝试建立一套个性化的知识目录或索引,通过它来发现自身的不足,并有针对性地进行学习。对于数据架构师而言,他们需要掌握的知识领域广泛而深入,不仅包括硬件、网络、安全等基础技术,还要了解应用层面,并熟练掌握至少一门编程语言。同时,深入理解数据库技术、具备大数据实操经验以及精通数据仓库建模和ELT技术也是必不可少的。只有这样,数据架构师才能具备足够的深度和广度,应对复杂的业务和技术挑战。 构建个人知识体系是数据架构师在学习和工作中的一项重要任务。通过系统化、不断深化的知识积累,数据架构师能够有效应对快速变化的商业环境和技术革新,进一
|
2月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路