ElasticSearch 用法

首先讲下 ES的倒排序索引

入门-倒排索引

正排索引(传统)

idcontent
1001my name is zhang san
1002my name is li si

倒排索引

keywordid
name1001, 1002
zhang1001

正排索引:我想查name,这时候是模糊的查询,会循环遍历并且同时也会使索引失效

倒排索引:我相查name,这时候直接就查到id==1001,1002,然后再关联文章内容

Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。 为了方便大家理解,我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比

ES 里的 Index 可以看做一个库,而 Types 相当于表, Documents 则相当于表的行。这里 Types 的概念已经被逐渐弱化, Elasticsearch 6.X 中,一个 index 下已经只能包含一个type, Elasticsearch 7.X 中, Type 的概念已经被删除了。

es, 倒排索引优点
倒排索引是不可更改的,一旦它被建立了,里面的数据就不会再进行更改。这样做就带来了以下几个好处:

1. 不用给索引加锁,因为不允许被更改,只有读操作,所以就不用考虑多线程导致互斥等问题。

2. 索引一旦被加载到了缓存中,大部分访问操作都是对内存的读操作,省去了访问磁盘带来的io开销。

3. 倒排索引具有不可变性,所有基于该索引而产生的缓存也不需要更改,因为没有数据变更。

4. 倒排索引可以压缩数据,减少磁盘io及对内存的消耗。

如何在ES上创建索引

首先打开kibanba

进入到控制台然后开始创建索引

之前说过es中索引对应的是mysql的数据库,所以我们应该先创建索引

创建索引语法:put shooping 

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "shopping"
}
会返回这几个字段,分别代表

acknowledged:代表是创建索引创建成功

shards_acjnowledged: 代表所有分片创建成功

index:代表索引的名字

然后再次put的,会出现这种情况 put是具有幂等性的

{
  "error" : {
    "root_cause" : [
      {
        "type" : "resource_already_exists_exception",
        "reason" : "index [shopping/32XXUAigSX-96lF9wV49Aw] already exists",
        "index_uuid" : "32XXUAigSX-96lF9wV49Aw",
        "index" : "shopping"
      }
    ],
    "type" : "resource_already_exists_exception",
    "reason" : "index [shopping/32XXUAigSX-96lF9wV49Aw] already exists",
    "index_uuid" : "32XXUAigSX-96lF9wV49Aw",
    "index" : "shopping"
  },
  "status" : 400
}
error:表示错误

root_cause:表示错误的列表

type:表示错误类型

reason:错误的原因

index_uuid:唯一标识

index:索引名字

如果想用post请求会发送什么,post是不具有幂等性的

Incorrect HTTP method for uri [/shopping?pretty=true] and method [POST], allowed: [HEAD, PUT, GET, DELETE]",

方法不能使用post,直接报错

查询索引语法:get shopping

{
  "shopping" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        "creation_date" : "1710766914710",
        "number_of_shards" : "1",
        "number_of_replicas" : "1",
        "uuid" : "32XXUAigSX-96lF9wV49Aw",
        "version" : {
          "created" : "7080099"
        },
        "provided_name" : "shopping"
      }
    }
  }
}

shopping:索引名字

aliases:索引别名

mappings:意识就是文档结构和字段类型

settings:设置索引的信息

index:索引级的设置

creation_date:创建时间

number_of_shards:索引分片的数量

number_of_replicas:每个分片的副本数量

uuid:uuid

version:版本号

provided_name:提供的索引名字

查询全部索引语法:get _cat/indices?v

表头    含义
health    当前服务器健康状态: green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)
status    索引打开、关闭状态
index    索引名
uuid    索引统一编号
pri    主分片数量
rep    副本数量
docs.count    可用文档数量
docs.deleted    文档删除状态(逻辑删除)
store.size    主分片和副分片整体占空间大小
pri.store.size    主分片占空间大小

删除索引语法:delete shopping

{
  "acknowledged" : true
}
acknowledged:是否成功

创建es数据语法:post /shopping/_doc

{
  "error" : {
    "root_cause" : [
      {
        "type" : "parse_exception",
        "reason" : "request body is required"
      }
    ],
    "type" : "parse_exception",
    "reason" : "request body is required"
  },
  "status" : 400
}
文档对应的是数据库中数据

这个原因就是没有body数据,并且我们传递数据是json

试着这种修改一下

{
  "_index" : "shopping", 
  "_type" : "_doc",
  "_id" : "iQPEUY4Bonlp-IezIGqE",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

index:索引

type:文档

id:唯一标识

result:结果

shards:分配

total:分片总数

successful:成功数量

failed:失败数量

seq_no:文档序列号,序列号越大标识越新

_primary_term:文档所属的主要分片的任期号

当在发送一模一样的请求

id一直在变化,如果我们想查询某个数据,id太麻烦了,如果想自定义呢

创建es数据指定id语法:post /shopping/_doc/1001

如果我们指定了id,这时候就可以用put,因为他是幂等性

主键查询和全局查询语法

主键查询:get /shopping/_doc/1001

{
  "_index" : "shopping",             //索引
  "_type" : "_doc",                     //类型
  "_id" : "1001",                        //id
  "_version" : 2,                       //版本号
  "_seq_no" : 5,                       //序列号
  "_primary_term" : 1,
  "found" : true,                      //成功
  "_source" : {                        //信息
    "name" : "huyin",
    "age" : "21",
    "sex" : "男"
  }
}

查询没有的数据

{
  "_index" : "shopping", 
  "_type" : "_doc",             
  "_id" : "1002",
  "found" : false
}

查询全部数据语法:get /shopping/_search

{
  "took" : 0,                          //      耗时 
  "timed_out" : false,            //    超时
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 5,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [                           //命中
      {
        "_index" : "shopping",
        "_type" : "_doc",
        "_id" : "iQPEUY4Bonlp-IezIGqE",
        "_score" : 1.0,
        "_source" : {
          "name" : "huyin",
          "age" : "21",
          "sex" : "男"
        }
      },
      {
        "_index" : "shopping",
        "_type" : "_doc",
        "_id" : "AQPJUY4Bonlp-IezE2v3",
        "_score" : 1.0,
        "_source" : {
          "name" : "huyin",
          "age" : "21",
          "sex" : "男"
        },
    ]
  }
}

全局修改和局部修改语法

全局修改:put /shopping/_doc/1001

put具有幂等性所以可以用

{
  "_index" : "shopping",
  "_type" : "_doc",
  "_id" : "1001",
  "_version" : 3,             // 版本号是一直变化的
  "result" : "updated",    结果:updated 修改
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 6,
  "_primary_term" : 1
}

局部修改:post /shopping/_update/1001

get请求一个:get /shopping/_doc/1001

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【鸿蒙HarmonyOS开发笔记】动画过渡效果之组件内转场动画,内含ForEach动画

概述 我们在开发中难免设计组件的插入、删除过程。通过组件内转场动画,可定义组件出现、消失的效果。 组件内转场动画的接口为: transition(value: TransitionOptions)transition函数的入参为组件内转场的效果,可以定义平移、透明度、旋转…

AI论文速读 | UniTS:构建统一的时间序列模型

题目:UniTS: Building a Unified Time Series Model 作者:Shanghua Gao(高尚华), Teddy Koker, Owen Queen, Thomas Hartvigsen, Theodoros Tsiligkaridis, Marinka Zitnik 机构:哈佛大学(Harvard&#x…

如何监听抖音、快手、哔哩哔哩弹幕实现弹幕游戏制作?直播互动助手开放 API 帮你快速构建详细教程

弹幕直播概述 如何监听抖音、快手、哔哩哔哩弹幕实现弹幕游戏制作?随着中短视频平台直播热度的攀升,基于弹幕监听的直播模式也逐渐让大家熟知。如何去进行弹幕直播,去实现基于弹幕和礼物的直播新模式。边缘骇客直播互动助手是一款兼容大部分…

第四百一十回

文章目录 1. 概念介绍2. 方法与细节2.1 获取方法2.2 使用细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容,本章回中将介绍如何获取时间戳.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

U盘变本地磁盘?数据恢复有妙招!

一、U盘异变本地磁盘现象 在日常工作和生活中,U盘作为便携式的存储设备,广受大家喜爱。然而,有时我们会遇到一个奇怪的现象:原本应该显示为可移动磁盘的U盘,在插入电脑后却变成了“本地磁盘”。这种情况不仅让人困惑&…

解决:visio导出公式为pdf图片乱码问题

今天需要将Visio编辑好的以后的图输出pdf,但是点击保存后公式部分一直乱码,如下图所示 保存为pdf后会变成: 解决方案:保存时点击文件下方的快速打印,存到桌面,不要直接点击保存

【C++】三大特性之多态

1 定义及实现 1.1 概念 多态是C三大特性之一。通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如学…

代码资源集合

代码资源 通信QPSKOQPSKMSK信道编码GMSK 雷达LFM及干扰技术LFM射频噪声干扰噪声调幅干扰噪声调频干扰噪声调相干扰固定移频干扰间歇采样干扰 SAR成像RD算法CS算法wk算法 SAR干扰技术射频噪声干扰调幅噪声干扰调频噪声干扰调相噪声干扰噪声卷积干扰乘积干扰移频干扰 DOA估计功率…

雷龙科技Nand flash芯片试用体验

一、项目背景 最近自己开始准备了一个智能家居控制系统项目,需要包含室内的温湿度、空气质量、烟雾浓度以及气体含量,能够存储相应的数据,并进行显示。 Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案…

微信视频号小店营业执照怎么办理?办理流程是什么?详细教程分享

大家好,我是电商花花。 现在视频号小店发展的这么好,越来越多的朋友都想加入到视频号小店电商行列。 而做视频号小店第一步就是要有企业营业执照,做视频号小店需要企业执照,因为个体户营业执照开的店铺,不能加入优选…

【Java】高级篇1:异常处理

异常:程序在执行过程中出现的非正常情况,如果不处理最终会导致JVM的非正常停止。 Java的异常抛出机制 Java异常体系 1、Throwable 2、Error和Exception 异常处理方式 1、try-catch-finally(捕获异常) 基本结构: 使用…

linux学习之Socket

目录 编写socket-udp 第一步,编写套接字 第二步,绑定端口号 第三步,启动服务器,读取数据 第四步,接收消息并发回信息给对方 编写socket-Tcp 第一步,编写套接字 第二步,绑定端口号 第三步…

2、高级语言的语法描述

常用的高级程序设计语言 程序语言的定义 语法 一组规则,用它可以形成和产生合适的程序 词法规则:单词符号的形成规则。 单词符号的形成规则单词符号是语言中具有独立意义的最基本结构 一般包括:常数、标识符、基本字、算符、界符等 描述工具:有限自动机…

蓝桥杯单片机快速开发笔记——超声波测距

一、原理分析 超声波测距是一种常见的测距方法,其原理是利用超声波在空气中传播的速度恒定且较快的特性,通过发送超声波信号并接收回波,计算出物体与传感器之间的距离。以下是超声波测距的原理和应用: 原理: 发送超声…

MyBookShopWeb第三波+书店商城asp.net+sqlserver

MyBookShopWeb第三波书店商城asp.netsqlserver 说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于asp.net架构和sql server数据库,并采用三层架构 功能模块: 用户功能有首页 购买商品 购物车 我…

苍穹外卖-day04:项目实战-套餐管理(新增套餐,分页查询套餐,删除套餐,修改套餐,起售停售套餐)业务类似于菜品模块

苍穹外卖-day04 课程内容 新增套餐套餐分页查询删除套餐修改套餐起售停售套餐 要求: 根据产品原型进行需求分析,分析出业务规则设计接口梳理表之间的关系(分类表、菜品表、套餐表、口味表、套餐菜品关系表)根据接口设计进行代…

几个不错的 Jupyter Notebook 云端展示平台

jupyter nbviewer URL:https://nbviewer.jupyter.org/ 结合Github的示例用法&#xff1a;https://nbviewer.jupyter.org/github/ <用户名或者用户名/存放ipynb文件的仓库或者Gist ID> 例如&#xff1a;https://nbviewer.jupyter.org/github/yeshan333/JupyterNotebook…

通过点击按钮实现查看全屏和退出全屏的效果

动态效果如图&#xff1a; 可以通过点击按钮&#xff0c;或者esc键实现全屏和退出全屏的效果 实现代码&#xff1a; <template><div class"hello"><el-button click"fullScreen()" v-if"!isFullscreen">查看全屏</el-butt…

登录远程SQLServer

1&#xff0c;登录格式: 服务器名称:192.168.0.104,1433 192.168.0.104&#xff1a;SQLServer所在远程PC的IP &#xff0c;&#xff1a;逗号分割IP与端口号 1433&#xff1a;SQLServer所使用的端口号&#xff08;默认为1433&#xff09;&#xff0c;当使用默认端口号时可以省…

《1w实盘and大盘基金预测 day6》

昨日预测完美&#xff0c;点位基本符合&#xff0c;我预测3052&#xff0c;实际最低3055。 走势也符合高平开&#xff0c;冲高回落&#xff0c;再反震荡上涨 大家可以观察我准不准哟&#xff5e;后面有我的一些写笔记、分享的网站。 关注公众号&#xff0c;了解各种理财预测内…