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

news/2024/10/21 17:23:32/

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

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(正在更新…)

章节内容

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

  • Elasticsearch 的单机配置 详细流程

在这里插入图片描述

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

返回结果如下:

{"_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

返回结果如下:

{"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对比传统关系行数据库如下:
在这里插入图片描述

核心概念

索引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个分片。


http://www.ppmy.cn/news/1540848.html

相关文章

scrapy 鲜花数据爬虫之【上】图片下载

本项目仅供学习之用 1 爬虫开发 利用scrapy工程编写爬取鲜花数据的爬虫,本次的目标是先下载相关的图片,要下载图片首先要获取到的就是图片的链接,爬虫的编写如下: class FlowerSpider(scrapy.Spider):name flowerallowed_doma…

【AI学习】Anthropic公司CEO Dario Amodei最近发表的文章《Machines of Loving Grace:AI如何让世界变得更好》

Anthropic公司CEO Dario Amodei最近发表的文章。通过翻译工具,大概看了看,未来非常美好! 只是生物学和身体健康 、神经科学和心理健康这两部分的前景,就非常让人兴奋! Machines of Loving Grace How AI Could Transf…

Lua条件语句

软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 在Lua编程语言中,条件语句是控制程序执行流程的关键工具。它们允许开发者根据特定条件的真假来执行不同的代码块,从而实现复杂的逻辑…

【Golang】Gin框架:Go语言中的轻量级Web框架

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Centos安装Nginx 非Docker

客户的机器属于 Centos7 系列,由于其较为陈旧,2024开始众多镜像和软件源都已失效。此篇文章将详细记录在 Centos7 操作系统上从零开始安装 Nginx 的整个流程。 本文Nginx是安装在/usr/local/nginx下 详细步骤如下: 准备Nginx安装包&#x…

Java之异常体系

异常体系分类: Error 错误Exception 异常错误和异常的继承关系: 所有错误的父类为 Error 类所有异常的父类为 Exception 类Error 和 Exception 的父类为 ThrowableThrowable:代表可抛出错误类型: 编译错误:由编译器找到…

安装配置sqoop(超详细)

前言 sqoop就是sql-to-hadoop,说通俗点,我们用到最多的就是mysql与hive之间的数据传递,而hive是依靠hadoop运行的,所以要再mysql和hive之间互相传递数据,就必须要安装sqoop 一、准备 我们要准备sqoop的安装包&#…

springboot+uinapp基于Android的固定资产借用管理平台

文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图论文效果图 前言 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 项目介绍 固定资产借用管理平台设计的目的是为用户提供使用申请、故障报修、设备归还、意见反馈等管理方…