ES语法(一)概括

一、语法

1、请求方式

Elasticsearch(ES)使用基于 JSON 的查询 DSL(领域特定语言)来与数据交互。

一个 ElasticSearch 请求和任何 HTTP 请求一样由若干相同的部件组成:

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

被 < > 标记的部件

含义

VERB

适当的 HTTP

方法

谓词

: GET`、 `POST`、 `PUT`、 `HEAD 或者 `DELETE`。

PROTOCOL

http 或者 https`(如果你在 ElasticSearch 前面有一个 `https 代理)

HOST

ElasticSearch 集群中任意节点的主机名,或者用 localhost 代表本地机器上的节点。

PORT

运行 ElasticSearch HTTP 服务的端口号,默认是 9200 。

PATH

API 的终端路径(例如 _count 将返回集群中文档数量)。Path 可能包含多个组件,例如:_cluster/stats 和 _nodes/stats/jvm 。

QUERY_STRING

任意可选的查询字符串参数 (例如 pretty 将格式化地输出 JSON 返回值,使其更容易阅读)

BODY

一个 JSON 格式的请求体 (如果请求需要的话)

2、大小写敏感

es是大小写敏感的。 

二、请求类型

1、GET请求

GET 请求通常用于查询操作;

它会通过 URL 参数传递请求数据,查询条件较简单时适用。

2、POST请求

POST 请求通常用于提交数据,如添加或更新文档;

也可用于执行复杂的查询:复杂查询或聚合(特别是当查询语句较大时,无法通过 URL 传递)

三、查询返回结果

执行命令:索引库名称/_search

空搜索的结果为:

{"took": 2,		# 该命令请求花费了多长时间,单位:毫秒。"timed_out": false,		# 搜索是否超时"_shards": {		# 搜索分片信息"total": 3,		# 搜索分片总数"successful": 3,		# 搜索成功的分片数量"skipped": 0,		# 没有搜索的分片,跳过的分片"failed": 0		# 搜索失败的分片数量},"hits": {		# 搜索结果集。需要的一切数据都是从hits中获取"total": 21798,		# 返回多少条数据"max_score": 1,		#返回结果中,最大的匹配度分值"hits": [		# 默认查询前十条数据,根据分值降序排序,这里为了节省地方,把默认查询的前十条数据删了9条,只剩下一条数据{"_index": "",		# 索引库名称"_type": "",		# 类型名称"_id": "",		# 该条数据的id"_score": 1,		# 关键字与该条数据的匹配度分值"_routing": "",		# routing参数是一个可选参数,默认使用文档的_id值,用于计算文档所属分片"_source": {		# 索引库中类型,返回结果字段,不指定的话,默认全部显示出来"id": 1,"orderNo": "","appId": "","componentAppId": "","settleNo": "","outSettleNo": "","settleAmount": 5,"orderAmount": 7,"settleStatus": 3,"paymentChannel": 1,"version": 2,"settleTime": ,"createTime": ,"updateTime": ,"promotionAccountId": "","invoiceStatus": 1,"promotionTypeValue": 0,"commissionRateFeeCentAmount": 0,"commissionChargeFeeCentAmount": 0,"promotionFeeCentAmount": 2,"developerPromotionFeeCentAmount": 0,"promotionType": ""}}]}
}

按照从上到下的顺序,一共四个返回值,took,timed_out,_shards,hits。

1、took

该命令请求花费了多长时间,单位:毫秒。

2、timed_out

搜索是否超时。

3、shards

搜索分片信息。

(1)total

搜索分片总数。

(2)successful

搜索成功的分片数量。

(3)skipped

没有搜索的分片,跳过的分片。

(4)failed

搜索失败的分片数量。

4、hits

搜索结果集,需要的一切数据都是从hits中获取。

(1)total

返回多少条数据。

(2)max_score

返回结果中,最大的匹配度分值。

(3)hits

默认查询前十条数据,根据分值降序排序。

(4)_index

索引库名称。

(5)_type

类型名称

(6)_id

该条数据的id。

(7)_score

关键字与该条数据的匹配度分值。

(8)_source

索引库中类型,返回结果字段,不指定的话,默认全部显示出来。

四、查询语法介绍

语法GET /索引/类型/_search         查询条件。

这个查询条件有两种写法,

1、URL 拼接

在GET的url中指定参数,这种方法比较简单。如

(1)查询所有

GET /索引名称/_search

(2) 条件查询: 

GET /es-test/_search?q=blog

(3)分页查询:

GET /es-test/_search?size=5&from=10
 2、DSL(常用)

还有一种是ES查询表达式 (DSL) 检索,所有查询都以 JSON 格式表示,通常包含 queryfilter 字段。在执行查询时,通常向特定的索引发起请求,使用 HTTP 方法(GET 或 POST)。JSON 的常用字段有:

(1)sort

封装排序

(2) _source

指定查询结果的字段,不指定则默认返回所有字段

GET /wtyy-test/user/_search
{"query":{"match_all":{}},"_source":["name","age"]
}
(3)query

封装查询条件

(4)分页条件

from、size

(5)highlight高亮

通常自己开发搜索引擎的时候,往往需要对搜索结果中的关键词高亮这种功能。注意,带条件查询高亮才生效,如无条件分页查询高亮是不生效的。

GET  wtyy-test/user/_search
{"query": {"match": {"address": "北京"}},"highlight": {"fields": {"address": {}}}
}

返回:

{"took": 61,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 1,"max_score": 0.7787034,"hits": [{"_index": "wtyy-test","_type": "user","_id": "1","_score": 0.7787034,"_source": {"name": "王五1","age": 1,"address": "湖北","school": "测试学校"},"highlight": {"address": ["湖<em>北</em>"]}}]}
}

在返回体中有一个 highlight 字段,里面对 message 字段进行高亮处理: 关键词使用了 <em></em> 标签包围了。可以使用 css 修改对 <em> 标签的样式,以实现关键词高亮效果。 

五、es的并发处理

使用的乐观锁 在 后面加上 version:

POST  /user/student/1?version=3
{"name":"zyk","age":0
}

 只有version = 当前记录的version的时候才能修改成功。es 可以自动控制 vserion 通过 ,version_type指定 ,version_type=external 要求 version 大于当前的version ,version_type=internal 这个是默认值 ,必须等于当前的值<br>version_type=external_gte 大于等于当前的version<br>version_type=force 已经废弃了不能用了,我也不知道以前什么意思,提升, Validation Failed: 1: version type [force] may no longer be used

POST  /user/student/1?version_type=external&version=505
{"name":"zyk","age":0
}

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

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

相关文章

Redis开发实践

在现代开发中&#xff0c;Redis 已经成为一种重要的高性能内存数据库。无论是作为缓存、消息队列还是排行榜的实现工具&#xff0c;它都表现出了极高的性能和灵活性。本文将带你了解 Redis 的基本概念&#xff0c;并通过 Python 示例代码实现 Redis 的核心功能。 文章目录 1. R…

【el-table】表格后端排序

在需要排序的列添加属性 sortable&#xff0c;后端排序&#xff0c;需将sortable设置为custom 如果需要自定义轮转添加 sort-orders 属性&#xff0c;数组中的元素需为以下三者之一&#xff1a;ascending 表示升序&#xff0c;descending 表示降序&#xff0c;null 表示还原为原…

Linux迁移gitlab容器

Linux迁移gitlab容器并配置 迁移gitlab容器本文分两部分&#xff0c;第一步在新服务器上安装相同版本的gitlab容器&#xff0c;可以在确定gitlab版本之后直接在docker上拉取&#xff0c;我这里直接从原服务器上将镜像打包加载到新服务器上。第二步从原服务器上操作备份文件&am…

3.建立本地仓库及常用命令

1.建立本地仓库 要使用Git对我们的代码进行版本控制&#xff0c;首先需要获得本地仓库 1&#xff09;在电脑的任意位置创建一个空目录&#xff0c;作为我们的本地Git仓库 2&#xff09;进入这个目录&#xff0c;右键点击Git Bash 窗口 3&#xff09;执行命令git init 4) 如果创…

Narya.ai正在寻找iOS工程师!#Mixlab内推

如果你对AI技术和iOS开发充满热情&#xff0c;这里有一个绝佳的机会加入一家专注于AI应用创新的初创公司。Narya.ai正在招聘iOS工程师&#xff0c;帮助他们开发下一代效率工具&#xff0c;旨在提升用户的日常生活效率与幸福感。 关于Narya.ai&#xff1a; 专注于AI应用层创新&a…

AI开发:生成式对抗网络入门 模型训练和图像生成 -Python 机器学习

阶段1&#xff1a;GAN是个啥&#xff1f; 生成式对抗网络&#xff08;Generative Adversarial Networks, GAN&#xff09;&#xff0c;名字听着就有点“对抗”的意思&#xff0c;没错&#xff01;它其实是两个神经网络互相斗智斗勇的游戏&#xff1a; 生成器&#xff08;Gene…

网络安全攻击和防范措施

常见的有四种网络安全攻击方式. 第一种是XSS跨站脚本攻击,往网页中插入恶意脚本代码以攻击用户. 防范措施有三种. 第一种是输入过滤,对用户的所有输入数据进行检测,过滤掉可能导致脚本的字符. 第二种是输出编码,使用工具对用户输入进行编码,使其中可能含有的HTML脚本变成普通…

Redis服务配置文件 redis.conf 更新修改配置参数说明

场景&#xff1a; 在安装redis服务中&#xff0c;默认的配置项通常不能实际使用&#xff0c;需要修改一些配置参数 修改配置参数 1、拿到 redis.cnf 文件&#xff0c;此文件通常在 redis 项目源码的第一级目录下 2、修改配置内容&#xff0c;主要修改项如下 protect…

成功解决logs is not a directory [Op:CreateSummaryFileWriter] name

成功解决logs is not a directory [Op:CreateSummaryFileWriter] name 目录 解决问题 解决思路 解决方法 1、确保日志目录存在 2、权限问题 3、日志路径配置问题 解决问题 tensorflow.python.framework.errors_impl.FailedPreconditionError: {{function_node __wrapped…

数据集增强:提升深度学习模型泛化能力的关键技术

在深度学习中&#xff0c;数据是模型性能的基石。大规模、高质量的数据集通常能显著提高模型的泛化能力&#xff0c;帮助模型在真实场景中做出更准确的预测。然而&#xff0c;在很多实际应用中&#xff0c;数据收集困难、昂贵或者受限&#xff0c;尤其是当数据集相对较小或标注…

039集——渐变色之:CAD中画彩虹()(CAD—C#二次开发入门)

&#xff08;来左边儿 跟我一起画个龙&#xff0c;在你右边儿 画一道彩虹 ~~~~~~~~~~~ &#xff09; 效果如下&#xff1a; 以下展示部分颜色源码&#xff1a; namespace AcTools {public class Class1{public Wform.Timer timer;//定时器需建在类下面public s…

第1章:CSS简介 --[CSS零基础入门]

1. 什么是CSS CSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;是一种用于描述HTML或XML&#xff08;包括各种XML方言如SVG、XHTML等&#xff09;文档表现的样式语言。CSS的主要目的是将网页的内容与它的表现形式分离&#xff0c;从而使得开发者能够…

Android 中绘制带箭头的线

在 Android 中绘制带箭头的线&#xff0c;可以使用 Canvas 和 Paint 类。以下是一个示例&#xff0c;展示了如何在自定义 View 中绘制一条带有箭头的线。 自定义 View 实现 你可以创建一个自定义的 View&#xff0c;并覆盖其 onDraw() 方法来实现这个功能。 java public clas…

面试题整理(二)

芯冰乐知识星球入口:芯冰乐

JS +CSS @keyframes fadeInUp 来定义载入动画

JSCSS 更完美展现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>跳动加载指示器</title>&l…

【SpringBoot】整合篇

1、log4j2 第一步&#xff0c;导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions><!-- 去掉springboot默认配置 --> <exclusion> <…

C++知识整理day3类与对象(下)——赋值运算符重载、取地址重载、列表初始化、友元、匿名对象、static

文章目录 1.赋值运算符重载1.1 运算符重载1.2 赋值运算符重载 2.取地址重载2.1 const成员函数2.2 取地址运算符重载 3.类与对象的补充3.1 再探构造函数---初始化列表3.2 类型转换3.3 static成员3.4 友元3.5 内部类3.6 匿名对象3.7 对象拷贝时的编译器优化 1.赋值运算符重载 赋…

web vue 滑动选择 n宫格选中 九宫格选中

页面动态布局经常性要交给客户来操作&#xff0c;他们按时他们的习惯在同一个屏幕内显示若干个子视图&#xff0c;尤其是在医学影像领域对于影像的同屏显示目视对比显的更为重要。 来看看如下的用户体验&#xff1a; 设计为最多支持5行6列页面展示后&#xff0c;右侧的布局则动…

解决idea使用maven打包时无法将本地lib库文件和resource目录中的资源文件打包进jar文件的问题!!!

一、问题复现 1&#xff09;项目结构如下 我们看到项目中手动添加了本地lib资源&#xff0c;同时bootspring的配置文件和mapper文件也放在了resouces目录中。 2&#xff09;上述结构的项目在使用maven打包时&#xff0c;最终生成的jar文件中将不包含lib库文件&#xff0c;甚…

React进阶面试题(四)

React 的 reconciliation&#xff08;协调&#xff09;算法 Reconciliation是React的diff算法&#xff0c;用于比较更新前后的虚拟DOM树差异&#xff0c;从而使用最小的代价将原始DOM按照新的状态、属性进行更新。其目的是找出两棵树的差异&#xff0c;原生方式直接比较复杂度…