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

文章目录

      • 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.hqwc.cn/news/9434.html

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

相关文章

【观察者模式】 ——每天一点小知识

💧 观察者模式 \color{#FF1493}{观察者模式} 观察者模式💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客🎐 🐳 《数据结构与算法》专栏的文章图文并茂🦕…

Lucene介绍与入门使用

https://github.com/apache/lucene Lucene简介 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎…

【可爱少女】InsCode Stable Diffusion 美图活动一期

在线运行地址 https://inscode.csdn.net/inscode/Stable-Diffusion 模型相关版本和参数配置 Steps(采样迭代步数): 20 Sampler(采样方法): Euler a 采样迭代步数(Steps)Sampling steps:20 生成批次:1 批次…

QScintilla自制代码编辑器系列(1)编译库文件与运行测试例子

1.下载工程源码 我本人机器上的QT是6.4 可以下载最新的代码 https://www.riverbankcomputing.com/static/Downloads/QScintilla/2.14.0/QScintilla_src-2.14.0.zip 2. 编译生成文件 无需改动可以顺利生成库文件 3. 运行例子 1)拷贝头文件 将整个Qsci文件夹拷…

Spark计算引擎介绍

1. Spark是什么 Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。 Spark是加州大学伯克利分校的AMP实验室(Algorithms, Machines and People Lab)开源的类Hadoop MapReduce的通用并行框架,拥有Hadoop MapReduce所具有的优点&…

Android Studio实现内容丰富的安卓物业管理平台

如需源码可以添加q-------3290510686,也有演示视频演示具体功能,源码不免费,尊重创作,尊重劳动。 项目编号102 1.开发环境 android stuido3.6 jak1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告…

Linux中Docker详细安装说明

1.准备环境 说明:准备Linux系统centos7版本(以上) 2.切换管理模式 说明:输入一下命令,然后回车,输入密码。 su – 3.更新yum 说明:为了保证doker能够给顺利安装,那么更新一下;如果没有也可以…

从小白到大神之路之学习运维第49天---第三阶段----MHA高可用集群数据库的安装部署

第三阶段基础 时 间:2023年6月29日 参加人:全班人员 内 容: MHA高可用数据库集群 目录 一、MHA基础 (一)简介 (二)发挥过程 (三)组成 (四&#x…

浅析便捷生活的新选择——抖音本地服务

抖音是一款风靡全球的短视频分享平台,其本地服务功能的发展也逐渐引起了广泛关注。本地服务是指抖音平台上的用户可以通过平台直接查找并使用周边的各种服务,比如美食外卖、快递配送、家政服务等。本地服务的发展对用户和商家都带来了很多便利和机遇。 首…

AIGC - Stable Diffusion 的 墨幽人造人 模型与 Tag 配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/131565068 Stable Diffusion的模型网站 LiblibAI:https://www.liblibai.com 墨幽人造人网址:https://www.liblibai.com/m…

React通过props的children实现插槽功能

可能会比较遗憾的说 React中并没有vue中的 slot 插槽概念 不过 可以通过props.children 实现类似功能 我们先创建一个React项目 在src下创建目录components 在下面创建一个dom.jsx组件 参考代码如下 import React from "react" export default class dom extends R…

Java版本+企业电子招投标系统源代码之电子招投标系统建设的重点和未来趋势

计算机与网络技术的不断发展,推动了社会各行业信息化的步伐。时至今日,电子政务、电子商务已经非常普及,云计算、大数据、工业4.0、“互联网”等发展理念也逐步深入人心,如何将传统行业与互联网科技有效结合起来,产生1…