大数据-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并实现搜索。  
目录
相关文章
|
资源调度 监控 调度
基于SCA的软件无线电系统的概念与架构
软件通信体系架构(SCA)是基于软件定义无线电(SDR)思想构建的开放式、标准化和模块化平台,旨在通过软件实现通信功能的灵活配置。SCA起源于美军为解决“信息烟囱”问题而推出的联合战术无线电系统(JTRS),其核心目标是提升多军种联合作战通信能力。 上海介方信息公司的OpenSCA操作环境严格遵循SCA4.1/SRTF标准,支持高集成、嵌入式等场景,适用于军用通信、雷达等领域。 SCA体系包括目标平台资源层(TRL)、环境抽象层(EAL)、SRTF操作环境(OE)及应用层(AL)。其中,SRTF操作环境包含操作系统、运行时环境(RTE)和核心框架(CF),提供波形管理、资源调度等功能。
|
SQL 运维 数据挖掘
森马服饰从 Elasticsearch 到阿里云 SelectDB 的架构演进之路
森马引入阿里云 SelectDB 替换原 Elasticsearch + 业务库混合架构,统一分析 16+ 核心业务,打通 BI 组件,大幅简化数据同步链路和分析系统架构。实现复杂查询 QPS 提升 400%,响应时间缩短至秒级,亿级库存流水聚合查询缩短至 8 秒内的显著收益,有效驱动森马全渠道运营效率持续增长与业务创新。
444 0
森马服饰从 Elasticsearch 到阿里云 SelectDB 的架构演进之路
|
供应链 监控 安全
网络安全中的零信任架构:从概念到部署
网络安全中的零信任架构:从概念到部署
1545 75
|
XML Java 开发者
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
550 18
|
测试技术 持续交付 微服务
深入理解微服务架构:从概念到实践
深入理解微服务架构:从概念到实践
368 20
|
搜索推荐 API 定位技术
一文看懂Elasticsearch的技术架构:高效、精准的搜索神器
Elasticsearch 是一个基于 Lucene 的开源搜索引擎,以其强大的全文本搜索功能和快速的倒排索引技术著称。它不仅支持数字、文本、地理位置等多类型数据,还提供了可调相关度分数、高级查询 DSL 等功能。Elasticsearch 的核心技术流程包括数据导入、解析、索引化、查询处理、得分计算及结果返回,确保高效处理大规模数据并提供准确的搜索结果。通过 RESTful API、Logstash 和 Filebeat 等工具,Elasticsearch 可以从多种数据源中导入和解析数据,支持复杂的查询需求。
952 0
|
存储 负载均衡 监控
揭秘 Elasticsearch 集群架构,解锁大数据处理神器
Elasticsearch 是一个强大的分布式搜索和分析引擎,广泛应用于大数据处理、实时搜索和分析。本文深入探讨了 Elasticsearch 集群的架构和特性,包括高可用性和负载均衡,以及主节点、数据节点、协调节点和 Ingest 节点的角色和功能。
1035 0
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
2481 64
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
6763 0

热门文章

最新文章