ElscticSearch基础操作

Es数据格式和Mysql对比

ElasticSearch index(索引) Type(类型) Documents(文档) Fields(字段)

MySQL Databases(数据库) Table(表) Row(行) Column(列)

倒排索引

正向索引,在Mysql中使用的索引就是正排索引,索引对应的就是直接的数据

例子:

id content


1 my name is zhangsan

2 my name is lisi

倒排索引,是关键字关联主键ID,ID在去查找文章内容,一个倒排索引是由不同的关键字组成的索引库

强调的是关键字与id的关联

keyword id


name 1,2

zhangsan 1

使用ES

在这里插入图片描述

ES基础操作

在ES中,创建Index就相当于创建mysql中的Database

在PsotMan中,向ES服务器发送PUT请求:http://127.0.0.1:9200/shopping

相当与在ES服务器中创建了一个shoppping的数据库

在这里插入图片描述

我们的请求是以后幂等性的,在次发送相同的请求的时候,会报错

在这里插入图片描述

获取索引的相关信息

使用Get进行请求

在这里插入图片描述

获取所有的索引信息,使用Get进行请求下面的路径

http://127.0.0.1:9200/_cat/indices?v

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

删除索引

使用delete进行请求

http://127.0.0.1:9200/demo

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

添加数据

因为在后面的版本中是没有type的概念的,所以添加数据是直接在索引中添加数据,只能使用POST进行插入,再返回的数据中有一个_id,这个id是作为唯一性存储的

两个新增的命令是相同的

http://127.0.0.1:9200/shopping/_doc

http://127.0.0.1:9200/shopping/_create

此路径说明是要向shopping的索引中添加数据,_doc是添加文档,添加的数据格式是JSON格式

在这里插入图片描述

添加自定义ID

只需要在_doc后面添加指定的ID即可

在这里插入图片描述

主键查询

使用Get进行主键查询,在_doc后面添加主键ID,即可查询当前主键的内容,source中的内容就是doc的内容,在关系型数据库中就相当于查询了一行

http://127.0.0.1:9200/shopping/_doc/1003

在这里插入图片描述

查询当前index下所有的数据

使用_searech

http://127.0.0.1:9200/shopping/_search

返回的数据

查询的毫秒数: “took”: 56,

是否超时: “timed_out”: false,

命中结果 : “hits”: {

​ “total”: {

​ “value”: 4, 总数量

​ “relation”: “eq” 比较

​ },

}

在这里插入图片描述

数据修改

全量数据更新,操作需要修改的id,再返回的时候,返回类型是updated
在这里插入图片描述

单一修改

需要进行post进行请求,在请求时候需要明确标识_update,ID

请求体

{

 "doc":{   //进行修改"title":"华为手机"  //修改字段和数据

​ }

}

在这里插入图片描述

下标删除

使用delete进行删除操作

http://127.0.0.1:9200/shopping/_doc/1003

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查询操作

查询指定类型的数据

使用URl进行查询

http://127.0.0.1:9200/shopping/_search?q=category:小米

URL分析:查询shopping的数据库,在这个数据库中所有品类为小米的数据

在这里插入图片描述

使用请求体查询

请求体内容和介绍

{

// 进行查询

“query”:{

 // 匹配查询"match":{  // 品类"category":"小米"}

}
在这里插入图片描述

请求体全量查询

{

“query”:{

	  "match_all":{}}

}

在这里插入图片描述

分页查询

分页计算公式: (页码-1) * 每页条数

from:开始位置

size:查询几条

返回的数据中 took表示命中数据,total表示总工有几条

在这里插入图片描述

查询指定信息

如果只需要查询想看到的数据,可以通过 _source进行控制
在这里插入图片描述

字段排序

这里的字段排序是有问题的,排序对于字段类型有一定的要求,如果是text类型是无法参与排序的

这个错误是来自于Elasticsearch的查询操作,具体是关于字段数据类型的问题。Elasticsearch中的字段可以是多种类型,比如textkeywordinteger等。每种类型都有其特定的用途和优化。

这个错误告诉你,你正在尝试对一个text类型的字段(在这里是price字段)执行聚合(aggregations)或排序(sorting)操作,但这是不被允许的。text字段是为了全文搜索而优化的,它们不是为聚合或排序这类需要每个文档字段数据的操作而优化的。

错误提供了两种解决方案:

  1. 使用keyword类型的字段:如果你的price字段实际上是一个固定的值(比如商品的价格),并且你需要对它进行聚合或排序,那么你应该将它定义为keyword类型,而不是text类型。
  2. 设置fielddata=true:这将允许你在text字段上执行聚合和排序操作。但是,请注意,这可能会消耗大量的内存,因为Elasticsearch需要为字段的每个唯一值加载数据。

在大多数情况下,建议将价格这样的字段定义为keyword类型,因为价格通常是一个固定的值,而不是需要全文搜索的文本。

如果你正在使用Elasticsearch的映射(mapping)来定义你的索引,那么你可以这样定义price字段:

{  "properties": {  "price": {  "type": "keyword"  }  // 其他字段...  }  
}

在这里插入图片描述

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

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

相关文章

【JVM篇】什么是类加载器,有哪些常见的类加载器

文章目录 🍔什么是类加载器🛸有哪些常见的类加载器 🍔什么是类加载器 负责在类加载过程中,将字节码信息以流的方式获取并加载到内存当中 🛸有哪些常见的类加载器 启动类加载器 启动类加载器是有Hotspot虚拟机通过的类…

每日一题 力扣107 二叉树的层序遍历Ⅱ

107. 二叉树的层序遍历 II 题目描述: 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 示例 1: 输入:root [3,9,20…

Github 2024-02-18 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-02-18统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5PowerShell项目1Rust项目1PHP项目1Jupyter Notebook项目1TypeScript项目1 Black:不妥…

把Llama2封装为API服务并做一个互动网页

最近按照官方例子,把Llama2跑起来了测试通了,但是想封装成api服务,耗费了一些些力气 参考:https://github.com/facebookresearch/llama/pull/147/files 1. 准备的前提如下 按照官方如下命令,可以运行成功 torchrun -…

程序员必看的几部电影

目录 《我是谁:没有绝对安全的系统》 《模仿游戏》 《硅谷传奇》 《代码 The Code》 作为程序员,除了在工作中不断学习和提升技术外,适当地放松也是必不可少的 看电影可以是一个很好的放松方式,而对于程序员来说,…

DNS服务正反解析

1.正向解析 1.配置基本 1.1防火墙配置 二者都要关闭 setenforce 0 systemctl stop firewalld #关闭防火墙 yum install bind -y #下载bind软件 客户端可以不用下 1.2服务端配置静态ip, ip a 查看网卡 nmcli c modify ens33 ipv4.method manual ipv4.addresses …

HTTP特性

大家好我是苏麟 , 今天说说HTTP特性. 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 到目前为止,HTTP 常见到版本有 HTTP/1.1,HTTP/2.0,HTTP/3.0,不同版本的 HTTP 特性是不一样的。 这里先用 HTTP/1.1 版本给大家介…

算法——位运算

1. 基础位运算 位运算符是在二进制位级别上对数据进行操作的运算符。以下是一些常见的位运算符: 1. 右移运算符 (>>) 将一个数的所有二进制位向右移动指定的位数。右移运算符 >> 表示将运算符左边的操作数的所有位向右移动右边指定的位数,右边多余的…

如何系统地学习Python

建议系统学习Python的途径遵循理论与实践相结合的教学方法。以下是一个分阶段的学习计划: 阶段一:基础知识 理解Python的特点: 认识Python的历史与设计哲学。学习Python的基本语法和运行环境。 安装Python: 学习如何在不同操作系…

(03)Hive的相关概念——分区表、分桶表

目录 一、Hive分区表 1.1 分区表的概念 1.2 分区表的创建 1.3 分区表数据加载及查询 1.3.1 静态分区 1.3.2 动态分区 1.4 分区表的本质及使用 1.5 分区表的注意事项 1.6 多重分区表 二、Hive分桶表 2.1 分桶表的概念 2.2 分桶表的创建 2.3 分桶表的数据加载 2.4 …

OpenAI最新模型Sora到底有多强?眼见为实的真实世界即将成为过去!

文章目录 1. 写在前面2. 什么是Sora?3. Sora的技术原理 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感…

【MySQL】:C/C++链接

C/C链接 一.前置工作二.官方手册三.基本接口1.初始化和关闭2.进行连接3.下达命令4.获取执行结果5.释放空间 四.测试源代码 一.前置工作 进行C/C链接时我们需要第三方库,但实际上在我们安装MySQL时就已经安装了,如果没有安装下面可以再执行该命令进行更新…

【解决(几乎)任何机器学习问题】:超参数优化篇(超详细)

这篇文章相当长,您可以添加至收藏夹,以便在后续有空时候悠闲地阅读。 有了优秀的模型,就有了优化超参数以获得最佳得分模型的难题。那么,什么是超参数优化呢?假设您的机器学习项⽬有⼀个简单的流程。有⼀个数据集&…

【Kuiperinfer】笔记01 项目预览与环境配置

学习目标 实现一个深度学习推理框架设计、编写一个计算图实现常见的算子,例如卷积、池化、全连接学会如何进行算子的优化加速使用自己的推理框架推理常见模型,检查结果是否能够和torch对齐 什么是推理框架? 推理框架用于对已经训练完成的模…

基于Spring Boot的智能物流管理系统,计算机毕业设计(带源码+论文)

源码获取地址: 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1759581137025445890

npm ERR! network This is a problem related to network connectivity.

遇到 ETIMEDOUT 错误时,这表明npm尝试连接到npm仓库时超时了,这通常是由网络连接问题引起的。这可能是因为网络不稳定、连接速度慢、或者你的网络配置阻止了对npm仓库的访问。以下是一些解决这个问题的步骤: 1. 检查网络连接 首先&#xff…

java的泛型【详解】

定义类、接口、方法时&#xff0c;同时声明了一个或者多个类型变量&#xff08;如&#xff1a;<E>&#xff09; &#xff0c;称为泛型类、泛型接口&#xff0c;泛型方法、它们统称为泛型。 作用&#xff1a;泛型提供了在编译阶段约束所能操作的数据类型&#xff0c;并自…

Qt 使用QScintilla 编辑lua 脚本

需求&#xff1a; 利用QScintilla 编辑lua 脚本 步骤&#xff1a; 1&#xff0c;下载 QScintilla Riverbank Computing | Download 2, 打开 src/qscintilla.pro 文件 编译出 dll库 3&#xff0c;工程中引入这个库 注意debug 模式 必须加载debug 版本编译的库&#xff0…

Yii2项目使用composer异常记录

问题描述 在yii2项目中&#xff0c;使用require命令安装依赖时&#xff0c;出现如下错误提示 该提示意思是&#xff1a;composer运行时&#xff0c;执行了yiisoft/yii2-composer目录下的插件&#xff0c;但是该插件使用的API版本是1.0&#xff0c;但是当前的cmposer版本提供的…

Selenium实现多页面切换

当使用 Selenium 进行自动化测试或爬取数据时&#xff0c;有时需要处理多个页面之间的切换。以下是一些可能需要多页面切换的情况&#xff1a; 1、打开新窗口/页面&#xff1a; 在当前页面上点击链接、按钮或执行某些操作时&#xff0c;可能会打开一个新的窗口或页面。此时&a…