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

这篇具有很好参考价值的文章主要介绍了Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch

  • elasticsearch的服务端口为 9200 \textcolor{red}{9200} 9200 浏览器获得以下响应,服务正常启动
    Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch

3 数据格式

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

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

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的索引
Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch
再次向浏览器发送该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
Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch

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
Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch

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 文档操作

Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch
创建文档成功后可以返回一个标识文档信息的唯一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
Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch
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请求时,将会是一个修改文档的请求
Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch

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的文档信息
Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch

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 文档修改操作
Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch

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
Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch

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 文档搜索

Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch,Elasticsearch,elasticsearch文章来源地址https://www.toymoban.com/news/detail-521065.html

到了这里,关于Elasticsearch(1)——倒排索引与HTTP操作Elasticsearch的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Elasticsearch专栏 01】深入探索:Elasticsearch的正向索引和倒排索引是什么

    首先,要明确的是,Elasticsearch本质上只使用倒排索引来实现高效的搜索和查询功能。正向索引虽然在某些数据库和搜索系统中被提及,但在Elasticsearch的上下文中并不是一个核心概念。下面我详细解释倒排索引,并简要提及正向索引以提供对比。 倒排索引是Elasticsearch中用于实

    2024年02月22日
    浏览(51)
  • 《面试1v1》ElasticSearch倒排索引

    🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结, 点击 突击面试 🍅 数十万人的面试选择: 面试说人话系列《面试1v1》 我是 javapub,一名 Markdown 程序员从👨‍💻,

    2024年02月13日
    浏览(42)
  • ElasticSearch:全文检索及倒排索引原理

    首先介绍一下结构化与非结构化数据: 结构化数据将数据具有的特征事先以结构化的形式定义好,数据有固定的格式或有限的长度。典型的结构化数据就是传统关系型数据库的表结构,数据特征直接体现在表结构的字段上,所以根据某一特征做数据检索很直接,速度也比较快

    2024年02月14日
    浏览(44)
  • Elasticsearch 如何做到快速检索 - 倒排索引的秘密

    这里我们就引出了一个概念,也是我们今天的要剖析的重点 - 倒排索引。也是 ES 的核心知识点。 如果你了解 ES 应该知道,ES 可以说是对 Lucene 的一个封装,里面关于倒排索引的实现就是通过 lucene 这个 jar 包提供的 API 实现的,所以下面讲的关于倒排索引的内容实际上都是

    2023年04月08日
    浏览(35)
  • 【Elasticsearch专栏 02】深入探索:Elasticsearch为什么使用倒排索引而不是正排索引

    Elasticsearch选择使用倒排索引而不是正排索引,主要是基于倒排索引在处理全文搜索和大规模数据集时的优势。下面将详细解释为什么Elasticsearch更倾向于使用倒排索引,并提供一些简化的代码片段来说明这两种索引结构的基本差异。 正排索引是一种将文档映射到其包含的单词

    2024年02月22日
    浏览(49)
  • Elasticsearch中倒排索引、分词器、DSL语法使用介绍

    🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝 🍓 更多文章请点击 简介及安装请查看这篇 :Elasticsea

    2024年02月11日
    浏览(50)
  • 【Elasticsearch专栏 03】深入探索:Elasticsearch的倒排索引是如何提高搜索效率的?

    倒排索引之所以能够提高搜索效率,关键在于其独特的构建方式和数据结构设计。下面,我将对倒排索引的工作原理进行深层解读,并阐述其如何显著提高搜索效率。 分词与索引构建 首先,搜索引擎会对文档内容进行分词处理,将文本拆分成独立的单词或词组。然后,为每

    2024年02月22日
    浏览(39)
  • 尚硅谷ES基础 - RESTful & JSON&基本概念&倒排索引&HTTP

    RESTful JSON REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求

    2024年02月21日
    浏览(36)
  • 简述Elasticsearch(ES)是什么 全文搜索概念 (倒排索引 管理文档)

    今天 我们来说说 NoSql 中的 Elasticsearch 大家基本都叫它 ES 官方介绍 它是一个分布式全文搜索引擎 分布式是一个系统架构的概念 而 全文搜索引擎 全文搜索 可以说基本大家天天都在接触 就比如 我们京东购物 想买什么东西 在全文输入框中搜索 它就会在所有物品中 帮你找出需

    2024年01月25日
    浏览(46)
  • 深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略

    倒排索引是一种用于快速检索的数据结构,常用于搜索引擎和数据库中。与传统的正排索引不同,倒排索引是根据来建立索引,而不是根据文档ID。 倒排索引的建立过程如下:首先,将每个文档拆分成一系列的或词项,然后建立一个词项到文档的映射。对每个关

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包