【数据库】Elasticsearch的操作

在关系数据库和Elasticsearch之间,对基本概念和数据结构的理解对于使用两者进行有效的数据操作非常关键。下面是关系数据库和Elasticsearch之间的基本概念比较,包括实际的应用例子:

对比数据库的概念

数据库与索引

关系数据库

在关系数据库中,一个数据库是存储表格的集合。每个数据库实例可以包含多个表格,这些表格通常通过外键关系相互连接,使得表之间可以相互引用对方的数据,从而形成关联关系。

示例:创建一个名为 example_db 的数据库。

CREATE DATABASE example_db;
Elasticsearch

在Elasticsearch中,对应的概念是索引(Index)。每个索引是存储相关文档的集合,并且可以被看作是关系数据库中一个数据库的等效物。Elasticsearch允许在一个集群中创建和管理多个索引。

示例:创建一个名为 example_index 的索引。

PUT /example_index
{"settings": {"number_of_shards": 1,"number_of_replicas": 1}
}

在这个示例中,我们定义了索引的基本配置,如分片数和副本数,这些是控制索引存储和性能的关键参数。

表与文档

关系数据库

在关系数据库中,(Table)是数据的行列结构组织形式,其中定义了列(字段)和可能的数据类型约束,每行(记录)包含具体的数据项。

示例:创建一个表 users

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(255),email VARCHAR(255)
);
Elasticsearch

在Elasticsearch中,与表对应的是一组文档。每个文档都是一个包含多个字段的结构化数据项,文档被组织在索引中。Elasticsearch不强制要求文档遵守严格的模式。

示例:在 users 索引中定义文档的结构(映射)。

PUT /users
{"mappings": {"properties": {"username": { "type": "text" },"email": { "type": "keyword" }}}
}

这里,mappings 定义了文档中各个字段的数据类型。

具体的操作实例

了解Elasticsearch的基本操作是非常重要的,特别是当你对比其与传统关系数据库的相应操作时。这里我将列出在关系数据库和Elasticsearch中进行相似操作的例子,以进一步帮助您理解这两者之间的对应关系及操作语法差异。

1. 创建数据库 / 索引

  • 关系数据库 (如 MySQL)
    CREATE DATABASE example_db;
    
  • Elasticsearch
    PUT /example_index
    

2. 创建表 / 索引的映射

  • 关系数据库 (如 MySQL)
    CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(255),email VARCHAR(255)
    );
    
  • Elasticsearch
    PUT /users
    {"mappings": {"properties": {"username": { "type": "text" },"email": { "type": "keyword" }}}
    }
    

3. 插入数据 / 添加文档

  • 关系数据库 (如 MySQL)
    INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com');
    
  • Elasticsearch
    POST /users/_doc
    {"username": "john_doe","email": "john@example.com"
    }
    

4. 查询数据

  • 关系数据库 (如 MySQL)
    SELECT * FROM users WHERE username = 'john_doe';
    
  • Elasticsearch
    GET /users/_search
    {"query": {"match": {"username": "john_doe"}}
    }
    

5. 更新数据

  • 关系数据库 (如 MySQL)
    UPDATE users SET email = 'new_john@example.com' WHERE username = 'john_doe';
    
  • Elasticsearch
    POST /users/_update_by_query
    {"script": {"source": "ctx._source.email = 'new_john@example.com'","lang": "painless"},"query": {"match": {"username": "john_doe"}}
    }
    

6. 删除数据

  • 关系数据库 (如 MySQL)
    DELETE FROM users WHERE username = 'john_doe';
    
  • Elasticsearch
    POST /users/_delete_by_query
    {"query": {"match": {"username": "john_doe"}}
    }
    

7. 删除表 / 删除索引

  • 关系数据库 (如 MySQL)
    DROP TABLE users;
    
  • Elasticsearch
    DELETE /users
    

这些示例展示了在关系数据库和Elasticsearch中执行相似任务的基本语法差异。在Elasticsearch中,几乎所有操作都可以通过HTTP请求来完成,而传统的SQL数据库则使用SQL语句。这种区别在于Elasticsearch的设计初衷是为了高效的搜索和分析大规模数据集,而关系数据库则侧重于数据完整性和结构化数据的精确查询。

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

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

相关文章

LED显示屏控制器5个问题和解答

在LED电子显示屏的使用和维护过程中,用户经常会遇到各种技术问题。以下是五个关于LED电子显示屏控制器的常见问题及其解答,由专业LED显示屏生产厂家提供,旨在帮助用户更好地理解和使用LED显示屏。 1. 嵌入式实时脱机二合一控制器的工作原理 嵌…

SpringCloud Alibaba Sentinel 修改Dashboard用户名和密码

目录 一、下载Sentinel的Jar包 二、在启动时修改用户名和密码的命令 三、测试登录成功 在网上找到了一大堆文章,没一个有用的,最终还是通过不断测试找到了这个方法。 一、下载Sentinel的Jar包 Releases alibaba/Sentinel GitHub 二、在启动时修改…

二分优化dp,LeetCode 1235. Maximum Profit in Job Scheduling

目录 一、题目 1、题目描述 2、接口描述 python3 cpp 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 python3 cpp 一、题目 1、题目描述 We have n jobs, where every job is scheduled to be done from startTime[i] to endTime[i], obtaining a p…

论UML在学情精准测评系统中的应用

摘要简介 项目背景: 随着教育改革的不断深入,对学生学情的精准测评成为教育教学工作中的重要环节。为了解决传统学情测评方式主观性强、效率低、反馈不及时等问题,我们团队受教育主管部门委托,承担了中小学学情精准测评系统&…

数据分析层的功能特点和应用

数据分析层在基于大数据的医疗信息化系统中扮演着至关重要的角色,其功能特点和应用主要体现在以下几个方面: 一、功能特点 数据处理能力:数据分析层具备强大的数据处理能力,能够处理来自不同来源、格式和结构的医疗数据。这包括数据清洗、转换、整合和标准化,以确保数据的…

并发问题系统学习(更新中)

进程、线程 进程:进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。可以理解为一个java应用。 线程:线程是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。…

C++笔试强训day15

目录 1.平方数 2.分组 Check函数的具体实现&#xff1a; 3.拓扑排序 1.平方数 链接 数学找规律&#xff0c;找离 x 最近的完全平方数 y。 先开平方根再利用四舍五入进位即可。 详细代码&#xff1a; #include <cmath> #include <iostream> using namespac…

【吊打面试官系列】Java高并发篇 - 你对线程优先级的理解是什么?

大家好&#xff0c;我是锋哥。今天分享关于 【你对线程优先级的理解是什么&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 你对线程优先级的理解是什么&#xff1f; 每一个线程都是有优先级的&#xff0c;一般来说&#xff0c;高优先级的线程在运行时会具有优先…

基于C语言中的类型转换,C++标准创造出了更加可视化的类型转换

目录 前言 一、 C语言中的类型转换 二、为什么C需要四种类型转换 三、C中新增的四种强制类型转换操作符以及它们的应用场景 1.static_cast 2.reinterpret_cast 3.const_cast 4.dynamic_cast 前言 在C语言中&#xff0c;如果赋值运算符左右两侧的类型不同&#xff0c;或者…

新书速览|图神经网络基础、模型与应用实战

掌握PyTorch图神经网络基础与模型&#xff0c;实战自然语言处理、计算机视觉、推荐系统、社交网络应用开发 01 本书内容 图神经网络不仅能够解决传统机器学习方法无法解决的图数据问题&#xff0c;而且能够应用于许多实际场景&#xff0c;例如社交网络、药物发现、网络安全、…

服务器放在机房的好处有哪些?

今天小编就来聊一聊&#xff0c;服务区放在机房的好处都有哪些&#xff1f; 首先服务器放置在机房当中&#xff0c;可以受到7*24小时全天候的监管维护&#xff0c;专业的技术人员可以在服务器工作时提供一个可靠的技术支持&#xff0c;当机房中的服务器遭到网络攻击或者是出现服…

初级银行从业资格证知识点(十)

中国银保监会近年来启动了银行业保险业清廉金融文化建设活动&#xff0c;旨在通过全覆盖参与、全过程融入、全方位提升&#xff0c;增强金融从业人员清廉从业意识&#xff0c;培育清廉金融理念&#xff0c;通过文化的渗透力和影响力&#xff0c;厚植清廉根基&#xff0c;提升金…

如何设计一个简单的权限系统

在Java中设计一个简单的权限系统&#xff0c;通常涉及以下几个步骤&#xff1a; 定义角色&#xff08;Role&#xff09;和权限&#xff08;Permission&#xff09;实体&#xff1a;首先&#xff0c;你需要定义角色和权限的实体类&#xff0c;以及它们之间的关系。 创建用户&am…

Yii2 自动生成php代码

文档地址&#xff1a;入门&#xff08;Getting Started&#xff09;: 用 Gii 生成代码&#xff08;Generating Code with Gii&#xff09; - Yii 2.0 权威指南 - 文档 - Yii Framework 中文网 找到配置文件&#xff0c;以我的项目为例&#xff1a; 因为的是开启了路由美化所以访…

【前端热门框架【vue框架】】——对组件进行更加简洁合理的处理和解释(一)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;程序员-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

YOLOv5独家原创改进: 通用倒瓶颈(UIB)搜索块结合C3二次创新 | 轻量化之王MobileNetV4

💡💡💡创新点:轻量化之王MobileNetV4 开源 | Top-1 精度 87%,手机推理速度 3.8ms,原地起飞! 最主要创新:引入了通用倒瓶颈(UIB)搜索块,这是一个统一且灵活的结构,它融合了倒瓶颈(IB)、ConvNext、前馈网络(FFN)以及一种新颖的额外深度可分(ExtraDW)变体技…

Stable Diffusion WebUI 使用综述

前言 科技圈的风口年年都在变&#xff0c;前几年是区块链&#xff0c;后来是虚拟现实&#xff0c;元宇宙&#xff0c;web3&#xff0c;而现在是 AI&#xff0c;VR 曾经让我兴奋过&#xff0c;可惜它最终没能形成足够大的浪潮&#xff0c;离最终实现可能还很遥远。而 2022 年开…

flutter日期选择器仅选择年、月

引入包&#xff1a;flutter_datetime_picker: 1.5.0 封装 import package:flutter/cupertino.dart; import package:flutter/material.dart; import package:flutter_datetime_picker/flutter_datetime_picker.dart;class ATuiDateTimePicker {static Future<DateTime> …

这篇超详细讲述提取图像中文本python库有哪些?

当提取图像中的文本时,不同的 OCR 库有各自的特点和优势.以下是对每个库进行详细阐述&#xff1a; 1.Tesseract 简介:Tesseract是由Google开源的免费OCR引擎,目前由社区维护.它支持多种语言和字体,并且在处理标准文本方面表现良好. 优势&#xff1a; 支持多种语言和字体. …

TSINGSEE青犀视频边缘计算AI智能分析网关V4告警消息语音推送的配置流程

TSINGSEE青犀视频边缘计算硬件智能分析网关V4内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。今天我们来分享一下如何配置和使用AI智能分析网关V4的语音推送。 提前准备…