Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch

news2024/10/7 12:26:46

文章目录

      • 1 前言
      • 2 Elasticsearch 安装
      • 3 数据格式
      • 4 倒排索引
      • 5 常用HTTP请求操作Elasticsearch
        • 5.1 创建索引
        • 5.2 查询索引信息
        • 5.3 删除索引
        • 5.4 创建/修改文档
        • 5.5查找文档
        • 5.6局部修改文档
        • 5.7删除文档
        • 5.8分页查询

1 前言

Elastic Stack 核心产品包括 Elasticsearch【存储数据】、Kibana【展示数据】、Beats 和 Logstash【收集与传输数据】(也称为 ELK Stack)等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。sa

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,Elasticsearch 会集中存储您的数据,让您飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。

2 Elasticsearch 安装

  • 下载安装包 Download Elasticsearch 下载版本7.8.0,操作系统为Windows

  • 下载后解压,运行bin文件下的elasticsearch.bat命令
    在这里插入图片描述

  • elasticsearch的服务端口为 9200 \textcolor{red}{9200} 9200 浏览器获得以下响应,服务正常启动
    在这里插入图片描述

3 数据格式

Elasticsearch 是面向 文档型 \textcolor{red}{文档型} 文档型的存储数据库。一条数据就是一个文档。为了方便大家理解,我们将Elasticsearch里存储文档数据和关系型数据库Mysql存储数据的概念进行一个类别。索引是独立文档的集合体。类比于Mysql中的DataBase,Type类别与数据库中的表,在Elasticsearch7.X中Type的概念被删除了。每个存储的文档数据就是数据库中每行,文档中的字段信息对应着表的具体栏位。

在这里插入图片描述

4 倒排索引

Elasticsearch 使用一种称为 倒排索引 \textcolor{red}{倒排索引} 倒排索引的结构,它适用于快速的全文搜索。一个倒排索引由文档 中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。

假设我们有两个文档,每个文档的正文字段包含如下内容:
1、The quick brown fox jumped over the lazy dog
2、Quick brown foxes leap over lazy dogs in summer

为了创建倒排索引,我们首先将每个文档的正文字段,拆分成单独的词(我们称它为词条或 Tokens),创建一个包含所有不重复词条的排序列表,然后列出每个词条出现在哪个文档。

词条文档
quick文档1
lazy文档1 文档2
brown文档1 文档2
fox文档1
leap文档2

假如我们想想要搜索brown ,我们只需要查找包含每个词条的倒排索引

词条文档
brown文档1 文档2

我们可以看到两篇文档中都包含brown字条,两篇文章都被检索出来了。
默认情况下,Elasticsearch 文档每个字段都会被索引。如果某些字段不需要支持查询,可以在映射中配置 “index”: false ,减少存储空间占用,并且提升写入速度。这部分内容我将在后面为大家介绍。

5 常用HTTP请求操作Elasticsearch

5.1 创建索引

类比关系型数据库,当我们操作数据时,需要知道是针对哪一个数据库。Index相当于关系型数据库的DB,所以需要创建索引。可以发送PUT请求 h t t p : / / l o c a l h o s t : 9200 / i n d e x 1 \textcolor{red}{ http://localhost:9200/index1} http://localhost:9200/index1 去创建名称为Index1的索引
在这里插入图片描述
再次向浏览器发送该put请求时,会被告知异常

{
    "error": {
        "root_cause": [
            {
                "type": "resource_already_exists_exception",
                "reason": "index [index1/naVrfF_oQ325n2p60qJCnA] already exists",
                "index_uuid": "naVrfF_oQ325n2p60qJCnA",
                "index": "index1"
            }
        ],
        "type": "resource_already_exists_exception",
        "reason": "index [index1/naVrfF_oQ325n2p60qJCnA] already exists",
        "index_uuid": "naVrfF_oQ325n2p60qJCnA",
        "index": "index1"
    },
    "status": 400
}

5.2 查询索引信息

发送Get请求去获得指定索引信息 h t t p : / / l o c a l h o s t : 9200 / i n d e x 1 \textcolor{red}{http://localhost:9200/index1} http://localhost:9200/index1
在这里插入图片描述

5.3 删除索引

发送Delete请求去删除指定索引信息 h t t p : / / l o c a l h o s t : 9200 / i n d e x 1 \textcolor{red}{http://localhost:9200/index1} http://localhost:9200/index1
在这里插入图片描述

5.4 创建/修改文档

创建文档的操作,类似与向MySQL数据库中的表插入指定的数据信息。与之不同的是,插入的是文档数据,传递请求的中请求体为Json数据
发送Post请求去创建文档数据 h t t p : / / l o c a l h o s t : 9200 / i n d e x 1 / d o c \textcolor{red}{http://localhost:9200/index1/_doc} http://localhost:9200/index1/doc

index1 指定的文档请求
_doc 文档操作

在这里插入图片描述
创建文档成功后可以返回一个标识文档信息的唯一id。当创建时不指定id时将会随机生成一个字符串。也可以在创建文档时指定文档的唯一标识。可以发送Put请求去创建文档数据 h t t p : / / l o c a l h o s t : 9200 / i n d e x 1 / d o c / 101 \textcolor{red}{http://localhost:9200/index1/_doc/101} http://localhost:9200/index1/doc/101 ,指定id为101
在这里插入图片描述
PUT 和 POST 请求的区别:

  1. POST理解为新增或更新,PUT理解为更新。因此,在PUT中需要指定id。而POST的话,不指定id(ES会自动生成文档id),指定id(有则修改,无则创建)。
  2. PUT会将新的json值完全替换掉旧的;而POST方式不传 _update 参数新的json值完全替换掉旧的,带_update 参数可以更新相同字段的值,其他数据不会改变,新提交的字段若不存在则增加。
  3. PUT操作是幂等的,POST操作不是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有什么不同,当我们多次发出同样的POST请求后,其结果是创建了若干的资源【不指定文档id的情形】。

再次向Elasticsearch服务器发送Put请求时,将会是一个修改文档的请求
在这里插入图片描述

5.5查找文档

根据文档 i d 查询指定的文档数据 h t t p : / / l o c a l h o s t : 9200 / i n d e x 1 / d o c / 1001 \textcolor{red}{根据文档id查询指定的文档数据http://localhost:9200/index1/_doc/1001} 根据文档id查询指定的文档数据http://localhost:9200/index1/doc/1001
这里示例查询文档id为1001的文档信息
在这里插入图片描述

5.6局部修改文档

文档的修改分为局部的修改数据和完全覆盖两种模式,完全覆盖修改的方式之前在使用PUT接口和POST接口 【携带id】 http://localhost:9200/index1/_doc/101已经介绍。
局部修改可以发送Post h t t p : / / l o c a l h o s t : 9200 / i n d e x 1 / u p d a t e / 101 \textcolor{red}{http://localhost:9200/index1/_update/101 } http://localhost:9200/index1/update/101 _update 文档修改操作
在这里插入图片描述

5.7删除文档

根据文档id 删除指定的文档数据,发送Delete请求 h t t p : / / l o c a l h o s t : 9200 / i n d e x 1 / d o c / 101 \textcolor{red}{http://localhost:9200/index1/_doc/101 } http://localhost:9200/index1/doc/101
在这里插入图片描述

5.8分页查询

Post请求 h t t p : / / l o c a l h o s t : 9200 / i n d e x 1 / s e a r c h \textcolor{red}{ http://localhost:9200/index1/_search } http://localhost:9200/index1/search _search 文档搜索

在这里插入图片描述

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

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

相关文章

行云管家堡垒机和传统堡垒机的区别简单讲解

据统计,70%以上的IT故障其实都是内部人为引起的,例如账号密码管理不规范、资产授权不清晰、违规执行高危敏感命令等,这意味着信息化安全管理首先要解决的是加强内部信息安全管控。而加强内部信息安全管控就需要用到运维审计产品,也…

Bito - 超越Copilot的一款神级插件

文章目录 01 引言02 Bito的安装与使用2.1 安装Bito2.2 注册并创建工作空间2.3 使用方式 03 其它3.1 插件支持的平台3.2 文档 04 文末 01 引言 Bito IDEA插件地址:https://plugins.jetbrains.com/plugin/18289-bito–gpt-4–chatgpt-to-write-code-explain-code-crea…

合作、参与、让开源更易用 | 亚马逊的开源文化

JAX 是一种越来越流行的库,它支持原生 Python 或 NumPy 函数的可组合函数转换,可用于高性能数值计算和机器学习研究。JAX 提供了编写 NumPy 程序的能力,这些程序可以使用 GPU/TPU 自动差分和加速,从而形成了更灵活的框架来支持现代…

举例说明什么是前馈神经网络

前馈神经网络(Feedforward Neural Network)是一种最基本的人工神经网络结构,它由多个层次的神经元组成,这些神经元间具有相互连接的权重。数据从输入层进入,然后逐层传播,最后到达输出层。在这个过程中&…

基于ava+Swing+Mysql图书信息管理系统

基于JavaSwingMysql图书信息管理系统 一、系统介绍二、功能展示1.主页2.新增图书信息3.删除图书信息 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看图书列表、新增图书信息、删除图书信息 运行环境:eclipse、idea、jdk1.8 二、功能展示…

YUV 8bit转10bit

在有些场景中,我们经常会使用到YUV 8 bit转10bit的场景。 比如YUV420p 8bit 转 P010,P010le,YUV420p10le。 首先说ffmpeg 8 bit 转 10bit. 对于ffmpeg的P010le 和P010be 分别代表小端和大端,那么它转化的时候非常简单,就是8 bit再增加 8bit&…

MSP432自主开发笔记1:编码器测速_外部中断捕获法测速\测正反转

开发板芯片型号:MSP432P401R 今日得以继续我的MSP432电赛速通之路! 进入此文章阶段,就预示着先人的开拓已经到了尽头,看着先人“一身转战三千里,一剑曾当百万师”,我们也该“门前学种先生柳”从而“步行夺得胡马骑”…

基于SSM的教务管理系统

基于ssm教务管理系统 一、项目背景介绍: 教务管理系统是一种基于信息技术的管理工具,可以用来管理学生、教师、课程、考试、教学资源等方面的信息,以实现高效、科学、规范的教务管理。随着信息技术的迅速发展,教务管理系统已经成为…

VM虚拟机端口映射接收CS弹反木马

VM虚拟机端口映射接收CS弹反木马 1. 前言1.1. 前期准备1.2. 整体思路 2. 整体操作流程2.1. 虚拟机配置2.2. WIFI路由器设置2.3. CS设置2.3.1. 创建本地监听器2.3.2. 创建生成木马监听器2.3.3. 创建反弹木马2.3.4. 查看效果 1. 前言 在日常的对客户的内网进行渗透的时候&#xf…

【广州华锐互动】VR地铁安全应急疏散模拟演练系统

VR地铁安全应急疏散模拟演练系统是一种利用虚拟现实技术模拟铁路安全事故的应用程序。该系统具有以下功能和内容: 多种场景和情境:用户可以选择不同的场景和情境进行模拟,例如列车脱轨、火灾、爆炸等。 操作控制器或手势识别技术&#xff1…

超细,RobotFramework自动化测试-测试套件使用详细(实战)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化因为是基于…

Ubuntu 20.04 LTS 安装 nvidia 驱动 + cuda 11.8 从开始到放弃!

升级 sources.list # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restri…

【赠书活动】同构:编程中的数学

写在前面 近年来随着人工智能、大规模分布式计算、多核CPU和异构计算等的发展,计算机中的各种编程技术在编程语言、软件架构、编译器、硬件体系结构、集成电路设计等方面都有着剧烈的变化。编程语言方面,越来越多的主流语言引入函数式编程的概念。软件架…

Zotero+百度网盘同步空间多电脑设置方法

Zotero百度网盘同步空间多电脑设置方法 之前一直用的Onedrive和Zotero来同步,原理差不多,但是百度网盘同步空间毕竟是国内的,(开了会员)速度快很多,记录一下多台电脑使用百度网盘同步空间来同步Zotero和相…

第六章.­ ­ Theory of Generalization

第六章. Theory of Generalization 上一章节我们主要探讨了M数值的大小对机器学习的影响。若M很大,我们就不能保证机器学习有很好的泛化能力,所以我们的问题就转换成验证M有限,最好是按照多项式成长,然后引入了成长函数mH(N)和二…

微服务一 实用篇 - 4.RabbitMQ

《微服务一 实用篇 - 4.RabbitMQ》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - 4.RabbitMQ》 《微服务一 实用篇 - 4.RabbitMQ》1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比 2.快速入门2.1.安装RabbitM…

viewsets.ViewSet 详解

目录 零、前提(这一段可以忽略) 一、地址 二、viewsets.ViewSet介绍 2.1 viewsets.ViewSet介绍 三、viewsets.ViewSet默认方法(增删改查等方法) 四、 生成路由 4.1 使用路由器注册 viewset,自动生成 URL 配置(推…

Git下载与安装(windows)

文章目录 Git 简介Git 下载Git 安装Git 环境变量配置 Git 简介 Git 是一种分布式版本控制系统,用于快速、高效地处理任何大小规模的项目。它是由 Linus Torvalds 在 2005 年开始开发的,Git 最初是为了管理 Linux 内核源代码而创建的。现在 Git 是一个广…

python脚本(Word转PDF格式小工具)

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QMessageBox from PyQt5.QtCore import Qt import sys import os from comtypes import client#文件转换脚本 class FileDropWidget(QWidget):def __init__(self):super().__init__()self.initUI()de…

IDEA+spring boot+mybatis+spring mvc+bootstrap+Mysql停车位管理系统源码

IDEAJavaSpring BootMyBatisshiroLayuiMysql停车位管理系统源码 一、系统介绍1.环境配置 二、系统展示1.登录2.注册3.个人信息4.修改密码5.我的订单6.我的留言7.查车位8.管理员登录9.公告列表10.车位列表11. 订单列表12. 积分排行13. 留言列表14.管理员列表15. 用户列表16.修改…