ES 之索引和文档

本文主要介绍ES中的数据组成结构单元。

一、文档(Document)

1、概念

  1. ES的数据存储单元是面向文档的,文档是所有数据存储,搜索的最小单元。
    你可以把ES中的文档对应成mysql中的一条条数据记录。到时候你存进ES的数据就是一个个文档。

  2. 文档存入ES是序列化成为JSON格式的。
    众所周知,json对象是由字段组成的。
    每个字段都有对应的字段类型,包括字符串,数字,布尔,日期,二进制,范围类型。

  3. 每个文档都有一个Unique ID,也就是唯一标识,可以对应Mysql表中的主键。
    ES中这个ID可以自己指定,也可以由ES自动生成。我们上一篇导入logstash配置的时候那个id就是指定的唯一标识键。

2、数据结构

一个JSON文档包含了一系列的字段,类似数据库中表的各个字段属性列。
JSON文档的格式灵活,不需要你强制的预先定义格式。

其中字段的类型可以人为指定,或者是通过ES自动推算。
支持数组格式,支持数据的嵌套。

3、文档的元数据

随便去Kibana中查一个数据如下:

 {"_index" : "movies","_type" : "_doc","_id" : "5233","_score" : 1.0,"_source" : {"@version" : "1","title" : "Road to Utopia","id" : "5233","year" : 1946,"genre" : ["Comedy"]}}

我们看到有这么几个东西组成:这几个组成就是文档的一个元数据。

  1. _index:表示这个文档数据属于哪个索引,文档存储的地方
  2. _type:表示文档所属的类型,类型7.0基本没意义了,都是_doc.文档代表的对象的类
  3. _id:表示这个文档的唯一标识,也就是上面说的类似主键。文档的唯一标识.id仅仅是一个字符串,它与_index和_type组合时,就可以在Elasticsearch中唯一标识一个文档。当创建一个文档,你可以自定义_id,也可以让Elasticsearch帮你自动生成
  4. _score:表示这个文档在本次检索中的相关性打分,这个在全文检索中有重要作用。
  5. _source:这里面放的就是你文档的真实内容。就是那个json文档,文档中有一个@version是文档的版本,这个版本每次修改都会递增,利用这个可以做乐观锁,CAS在并发修改的时候控制线程安全。
    而且也看到文档json中有字符串,有时间,还有个数组。各种类型都有,json数据格式的灵活性得以展示。

二、索引(index)

1、概念介绍

索引是ElasticSearch存放数据的地方,可以理解为关系型数据库中的一个数据库。事实上,我们的数据被存储和索引在分片(shards)中,索引只是一个把一个或多个分片分组在一起的逻辑空间。然而,这只是一些内部细节——我们的程序完全不用关心分片。对于我们的程序而言,文档存储在索引(index)中。剩下的细节由Elasticsearch关心既可。(索引的名字必须是全部小写,不能以下划线开头,不能包含逗号)

先使用语句查看一下索引的结构。

在这里插入图片描述
我们看到这个索引的一个结构组成。

  • index也就是索引是文档的容器,是一类文档的集合。你可以理解为Mysql中的表这个概念。

    • 每个索引都有自己的一个mapping定义,用于定义包含文档的字段名和字段类型,你可以对应理解为mysql中的表结构定义。定义好文档字段的类型,名称。
    • shard体现的存储的维度,索引中的数据会分散在shard分片上。
  • 索引的Mapping和Settings

    • Mapping定义的是文档字段的类型,就像Mysql的字段类型。表结构。
    • Setting定义不同的数据分布,比如在那个分片,去哪个节点这种。后续看。

2. 语境理解

索引在不同的语境中是不同的意思。
在ES中当你说你索引一个文档,就是把这个文档插入ES。
当你说一个索引,那就是名词,就是一个索引结构。
在MYSQL中可能是B+树索引。ES中还有倒排索引。

3. 索引创建原则

类似的数据放在一个索引,非类似的数据放不同索引:product index(包含了所有的商品),sales index(包含了所有的商品销售数据),inventory index(包含了所有库存相关的数据)。如果你把比如product,sales,human resource(employee),全都放在一个大的index里面,比如说company index,不合适的。
index中包含了很多类似的document:类似是什么意思,其实指的就是说,这些document的fields很大一部分是相同的,你说你放了3个document,每个document的fields都完全不一样,这就不是类似了,就不太适合放到一个index里面去了。
索引名称必须是小写的,不能用下划线开头,不能包含逗号:product,website,blog

三、Type(类型)

ES在7.0之前是有type这个概念的,一个Index可以设置多个types,那时候Index类似数据库,typel类似表,这个组成。
6.0开始的时候type就被逐步废弃。7.0开始,一个索引只有一个Type就是_doc,也就是一个库一个表,这时候库就是表了,这时候我们就说一个Index类似一个表。
此时es的结构和mysql的结构就可以用下面这个表格做对应理解,其实不是那么契合的。就是帮助理解而已。
在这里插入图片描述

四、索引 Rest Api

ES的检索提供了完整的rest的api调用来实现。
在这里插入图片描述

1. 查看索引的设置

GET /movies/_settings

在这里插入图片描述
在这个管理里面可以看到当前ES的所有的索引可以查看索引的详细信息。
在这里插入图片描述
点击索引进去看到详细信息。
在这里插入图片描述

2、索引操作 rest api

# 查询ES索引下的数据量
GET _cat/indices/movies?v# 查询ES索引下的mapping关系
GET /movies/_mapping# 查询ES当前环境下索引对应的数据量
GET _cat/indices?v

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

conda:Collecting package metadata (current_repodata.json): failed

使用conda install和conda create命令会出现下面的问题: Collecting package metadata (current_repodata.json): failed Collecting package metadata (current_repodata.json): failed>>>>>>>>>>>>>>>>>>…

MySQL、Oracle 常用SQL:建表、建视图、数据增删改查、常用condition

目录 1 MySQL、Oracle 建表语句整理1.1 MySQL 建表1.2 Oracle 建表1.3 补充1.3.1 主键:新增、删除1.3.2 字段:新增、修改、删除 2 MySQL、Oracle 建视图3 数据:增删改查3.1 插入数据3.1.1 MySQL、Oracle 插入一条数据3.1.2 MySQL、Oracle 插入…

BRC20通证的诞生与未来展望!如何导入bitget教程

BRC-20通证是什么? 嘿!你知道BRC-20通证吗?这可是比特币区块链上的超级明星!它们不依赖智能合约,而是把JSON代码刻在聪上,聪可是比特币的最小单位哦!就像在比特币的乐高积木上盖房子&#xff0…

dubbo入门案例!!!

入门案例之前我们先介绍一下:zookeeper。 Zookeeper是Apacahe Hadoop的子项目,可以为分布式应用程序协调服务,适合作为Dubbo服务的注册中心,负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只…

自动驾驶轨迹规划之碰撞检测(一)

欢迎大家关注我的B站: 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.碰撞检测的意义 2.安全走廊 3 计算几何 4 AABB与OBB 1.碰撞检测的意义 对于自动驾驶汽车或机器人的路径规划,碰撞检测是其…

Python 数据类型转换:数据世界的形态转换术

在 Python 中,数据类型转换是一项关键的技能。数据类型的转换使得我们能够在不同类型的数据之间进行转换和操作,提升了我们对数据的处理能力。本文将深入探讨 Python 中的数据类型转换,包括常见的数据类型、转换方法和使用技巧。 常见的数据类…

HTTP API 认证技术详解(四):HMAC Authentication

目录 什么是 HMAC Authentication 认证 HMAC Authentication 原理 HMAC Authentication 认证的步骤 使用 Golang 实现 HMAC Authentication 认证 HMAC Authentication 认证的安全性 HMAC 认证的最佳实践 小结 HTTP API 认证技术主要用于验证客户端身份,并确保…

M1 MacOS下安卓虚拟化的最佳方案

categories: [VM] tags: MacOS VM 写在前面 一直想在桌面环境虚拟化安卓app, 但是看网上的推荐一直感觉不合胃口, 不是要花钱就是有广告, 想着找找开源的实现, 后来发现还是 Google 自家的产品用着舒服. 安装与配置 brew install android-studio然后随便开一个项目, 选默认…

通过Shell脚本登录MySQL,并执行MySQL命令

以下是一个通过Shell脚本登录MySQL 8并执行MySQL命令的示例: #!/bin/bash# MySQL服务器地址(如果在同一台机器上,可以是localhost或127.0.0.1) MYSQL_HOST"localhost"# MySQL服务器端口(默认为3306&#xf…

阿赵UE学习笔记——10、Blender材质和绘制网格体

阿赵UE学习笔记目录   大家好,我是阿赵。   之前介绍了虚幻引擎的材质和材质实例。这次来介绍一个比较有趣的内置的Blender材质。   在用Unity的时候,我做过一个多通道混合地表贴图的效果,而要做过一个刷顶点颜色混合地表和水面的效果。…

qt绘制生成PDF文件

引言 之前做项目的时候,需要自己生成一个pdf文件,好久之前保存的草稿,今天就把它发表一下吧,留着自己以后有需要的时候在来查阅。 QString ReportMainWindow::createPdfFile() {QString strDirPath QDir::tempPath() "/T…

C#封装服务

C#封装服务 新建服务项目;重构 OnStart 和 OnStop using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using S…

STM32 -- 串口引脚整理

一、引脚分配列表 串口端口发送引脚 (TX)接收引脚 (RX)USART1PA9PA10USART2PA2PA3USART3PB10PB11UART4PC10PC11UART5PC12PD2USART6PC6PC7 二、串口引脚的规律 STM32芯片上,引脚功能的布局安排,被设计得很有规律。 不同型号间&#x…

【Gradle】Maven-Publishing

使用Java开发完成一个模块或者一个基础框架需要提供给团队项目使用,这个时候有两种方式可提供,一是提供源码,二是提供编译构建好的jar包供使用,这个时候需要讲构建好的包发布到公司的私服(公司maven仓库)&a…

Python如何操作RabbitMQ实现fanout发布订阅模式?有录播直播私教课视频教程

fanout发布订阅模式 基本用法 生产者 import json import rabbitmq# 建立连接 credentials rabbitmq.PlainCredentials(zhangdapeng,zhangdapeng520, ) # mq用户名和密码 connection_target rabbitmq.ConnectionParameters(host127.0.0.1,port5672,virtual_host/,credent…

HCIP BGP(一)

任务: 1.R1上有两个环回,分别为192.168.1.0/24&192.168.2.0/24,只允许学到汇总&1.0 2.R7上有两个环回172.16.1.0/24&172.16.2.0/24,要求全部宣告,但是只有2.0可以通过 3.全网可达 拓扑图如下&#xff…

C语言经典算法之顺序查找算法

目录 前言 A.建议 B.简介 一 代码实现 二 算法时空复杂度 A.时间复杂度: B.空间复杂度: 三 优点和缺点 A.优点: B.缺点: 四 现实中的应用 前言 A.建议 1.学习算法最重要的是理解算法的每一步,而不是记住算…

常见的反爬虫风控 | 验证码风控

一.前言 在当今信息技术迅速发展的背景下,网站和在线服务面临着日益增长的自动化访问威胁,这些大多来自于各类爬虫程序。这种大量的自动化访问不仅对网站的正常运行构成压力,还可能导致敏感数据的泄露,甚至被用于不正当竞争和恶意…

多表关联查询

基本信息: 1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) ); 创建score表。SQL代码如下&#…

PHP反序列化漏洞-魔术方法绕过

一、__wakeup()魔法函数绕过: 在PHP中,__wakeup()是一个魔术方法,用于在反序列化对象时自动调用。当反序列化字符串中的对象属性个数大于实际属性个数时,可以利用这个漏洞进行绕过。 触发条件: PHP版本为5.6.25或早期版本,或者PHP7版本小于7.0.10。反序列化字符串中的对…