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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据-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个分片。


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
7天前
|
大数据
【赵渝强老师】大数据主从架构的单点故障
大数据体系架构中,核心组件采用主从架构,存在单点故障问题。为提高系统可用性,需实现高可用(HA)架构,通常借助ZooKeeper来实现。ZooKeeper提供配置维护、分布式同步等功能,确保集群稳定运行。下图展示了基于ZooKeeper的HDFS HA架构。
|
1月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
90 1
|
7天前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
【赵渝强老师】基于大数据组件的平台架构
|
8天前
|
存储 索引
Elasticsearch分布式架构
【11月更文挑战第2天】
15 1
|
18天前
|
测试技术 API 开发工具
ElasticSearch核心概念:倒排索引
ElasticSearch核心概念:倒排索引
48 6
|
1月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
25 9
|
30天前
|
存储 监控 分布式数据库
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
本文介绍了百亿级数据存储架构的设计与实现,重点探讨了ElasticSearch和HBase的结合使用。通过ElasticSearch实现快速检索,HBase实现海量数据存储,解决了大规模数据的高效存储与查询问题。文章详细讲解了数据统一接入、元数据管理、数据一致性及平台监控等关键模块的设计思路和技术细节,帮助读者理解和掌握构建高性能数据存储系统的方法。
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
|
7天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
18 5
|
1月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
109 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo