当前位置: 首页 > news >正文

Elasticsearch总结笔记

文章目录

    • 简介
    • 类型
    • 增删改查操作
    • 索引原理

简介

  • 底层使用的lucene引擎,lucene引擎直接使用相对复杂,有一定的学习成本,同样是使用Java编写,Elasticsearch使用的rest风格的进行交互,而数据呢则是以JSON的方式进行传输。
  • 学习Elasticsearch要求使用的JDK版本在8以上。Elasticsearch主要用于检索,尤其是其全文检索的能力,以及自带乐观锁以及友好的集群,让它越来越受欢迎。
  • 使用Elasticsearch首先要指定是如何定位数据。即三要素进行定位,index索引,type类型,id主键(_index,_type,_id
  • PUT,DELETE,POST,GET(使用的方法都是大写,大括号在请求下一行)4种REST请求方式即完成增删改查,当然在ES中改其实是先把旧的移除,重新创建一个新的文档,PUT也可以更新,但是是整体更新,POST则是可以内容追加,不过也是一个新的文档。
  • 1.映射(Mapping
    描述数据在每个字段内如何存储
    2.分析(Analysis
    全文是如何处理使之可以被搜索的
    3.领域特定查询语言(Query DSL
    Elasticsearch 中强大灵活的查询语言

类型

ES的基本类型有:(和关系型SQL区别不需要设置字段的长度)
字符串:text,keyword
数字类型:integer,long
浮点类型"float,double,
布尔类型:boolean,
时间类型:date

在ES中默认只有text类型可以分词,分词使用英文引擎,按照单词分词,如果是中文进行查询的话,则是将数据变成单字分词

增删改查操作

查:

GET /索引名(即数据库)/_doc/_id(记录id值)

增(覆盖式)

PUT /索引名(即数据库)/_doc/_id(记录id值)
{_id:''
}

改:(增量式)

POST  /索引名(即数据库)/_doc/_id(记录id值)
{要修改的字段
}

删除

DELETE /索引名(即数据库)/_doc/_id(记录id值)

批量操作

POST /索引名(即数据库)/_doc/_bulk
{批量的文档(需注意每行文档记录不能换行)
}

高级查询:(Query DSL
1.查询所有

GET /索引名(即数据库)/_search
{"query":{"match_all":{}}
}

2.term条件查询

GET /索引名(即数据库)/_search
{"query":{"term":{}}
}

3.range范围查询

GET /索引名(即数据库)/_search
{"query":{"range":{"字段":{"gt":"值","lte":"值"}}}
}

3.前缀查询

GET /索引名(即数据库)/_search
{"query":{"prefix":{"字段":"值"}}
}

4.通配符查询

*是通配(可以匹配多个长度的),?是占位(匹配固定长度,如goo?,可匹配good,但不能god,匹配的字符长度是固定的)

GET /索引名/_search
{"query": {"wildcard": {"字段": {"value": "值* "}}}
}

5.ids查询

GET /索引名/_search
{"query": {"ids": {"values": id数组}}
}

6.模糊查询[fuzzy]

GET /products/_search
{"query": {"fuzzy": {"字段":"值"}}
}

模糊查询[fuzzy],切记使用有以下规则

fuzzy 关键字: ⽤来模糊查询含有指定关键字的⽂档
注意: fuzzy 模糊查询 最⼤模糊错误 必须在0-2之间
搜索关键词⻓度为 2 不允许存在模糊
搜索关键词⻓度为3-5 允许⼀次模糊
搜索关键词⻓度⼤于5 允许最⼤2模糊

7.布尔查询
这个其实就是基本类似于关系性SQL中的:exist,not exist 等语法

bool 关键字: ⽤来组合多个条件实现复杂查询
must: 相当于&& 同时成⽴
should: 相当于|| 成⽴⼀个就⾏
must_not: 相当于! 不能满⾜任何⼀个

GET /索引名/_search
{"query": {"bool": {"must": [{"term":{要求的条件JSON}}]}}
}

8.多字段查询[multi_match]
GET /索引名/_search

{"query": {"multi_match": {"query": "值","fields":字段数组}}
}

注意: 字段类型分词,将查询条件分词之后进⾏查询改字段 如果该字段不分词就会
将查询条件作为整体进⾏查询

9.默认字段分词查询[query_string]

GET /索引名/_search
{"query": {"query_string": {"default_field": "查询字段","query": "值"}}
}

注意: 查询字段分词就将查询条件分词查询,查询字段不分词将查询条件不分词查询

10.⾼亮查询[highlight]

highlight 关键字: 可以让符合条件的⽂档中的关键词⾼亮

GET /索引名/_search
{"query": {"term": {"字段": {"value": "值"}}},"highlight": {"fields": {"*":{}}}
}

⾃定义⾼亮html标签: 可以在highlight中使⽤ pre_tags 和 post_tags

GET /索引名/_search
{"query": {"term": {"字段": {"value": "值"}}},"highlight": {"post_tags": ["</span>"],"pre_tags": ["<span style='color:red'>"],"fields": {"*":{}}}
}

多字段⾼亮 使⽤ require_field_match 开启多个字段⾼亮

GET /索引名/_search
{"query": {"term": {"字段": {"value": "值"}}},"highlight": {"require_field_match": "false","post_tags": ["</span>"],"pre_tags": ["<span style='color:red'>"],"fields": {"*":{}}}
}

11.分页查询
利用from,和size,起始页同样是0开始,0即第一页

返回指定条数[size]
size 关键字: 指定查询结果中返回指定条数。 默认返回值10条
分⻚查询[form]
from 关键字: ⽤来指定起始返回位置,和size关键字连⽤可实现分⻚效

GET /索引/_search
{"query": {"match_all": {}},"size": 5,"from": 0
}

指定字段排序[sort]

GET /索引名/_search
{"query": {"match_all": {}},"sort": [{"字段": {"order": "desc"}}]
}

12.返回指定字段[_source]
_source 关键字: 是⼀个数组,在数组中⽤来指定展示那些字段

GET /索引名/_search
{"query": {"match_all": {}},"_source": 要展示的指定字段数组
}

索引原理

倒排索引(Inverted Index) 也叫反向索引,有反向索引必有正向索引。
通俗地来讲, 正向索引是通过key找value,反向索引则是通过value找key。
ES底层在检索时底层使⽤的就是倒排索引。

在ES中除了text类型分词,其他类型不分词,因此根据不同字段创建索引。就将文档的内容根据text字段内容先进行一个默认分词,然后将每个分词有默认的,id映射,当我们查询的时候,ES会将我们搜索条件进行分词,再用搜索的分词条件和我们数据的分词内容进行一定的算法匹配,然后找到id,再关联回我们的文档数据,形成一个命中记录集合,并根据匹配算法的匹配程度给文档打分,并返回整一个结果集

本质是使用了空间换时间的实现,搜索来了只要拿搜索关键词和我们的分词关键词比较即可,所以会很快。

注意: Elasticsearch : Elasticsearch分别为每个字段都建⽴了⼀个倒排索引。因此查询
时查询字段的term, term,就能知道⽂档ID,就能快速找到⽂档。

相关文章:

Elasticsearch总结笔记

文章目录简介类型增删改查操作索引原理简介 底层使用的lucene引擎&#xff0c;lucene引擎直接使用相对复杂&#xff0c;有一定的学习成本&#xff0c;同样是使用Java编写&#xff0c;Elasticsearch使用的rest风格的进行交互&#xff0c;而数据呢则是以JSON的方式进行传输。学习…...

Ubuntu 安装指定版本 Mysql,并设置远程连接(以安装mysql 5.5 为例)

目录 一、安装Mysql 1、卸载Mysql&#xff08;可跳过&#xff09; 2、安装mysql 软件源 3、安装mysql 5.5 4、验证测试 二、设置远程登录 1、允许使用root账号远程连接 2、Mysql 允许远程登录 一、安装Mysql 1、卸载Mysql&#xff08;可跳过&#xff09; 如果之前安装…...

NumPy:Python中的强大数学工具

NumPy&#xff1a;Python中的强大数学工具 文章目录NumPy&#xff1a;Python中的强大数学工具一、NumPy简介二、创建数组三、数组尺寸四、数组运算五、数组切片六、数组连接七、数据存取八、数组形态变换九、数组排序与搜索十、矩阵与线性代数运算一、NumPy简介 当谈到数据科学…...

Hbase资源隔离操作指南

1.检查集群的环境配置 1.1 HBase版本号确认> 5.11.0 引入rsgroup的Patch&#xff1a; [HBASE-6721] RegionServer Group based Assignment - ASF JIRA RegionServer Group based Assignment 社区支持版本&#xff1a;2.0.0 引入rsgroup的CDH版本 5.11.0 https://www.…...

TPS2012B泰克Tektronix隔离通道示波器

简  述&#xff1a; 复杂环境中开发和测试你的设计&#xff0c;进行浮动或差 分测量&#xff1b;100MHz&#xff0c;2通道 主要特点和优点 100 MHz和200 MHz带宽 高达2 GS/s的实时采样率 2条或4条全面隔离和浮动通道&#xff0c;外加隔离外部触 发 在安装两块电池时可以连续…...

9.4 PIM-DM

实验目的 熟悉PIM-DM的应用场景掌握PIM-DM的配置方法 实验拓扑 实验拓扑如图9-28所示&#xff1a; 图9-28&#xff1a;PIM-DM 实验步骤 &#xff08;1&#xff09;IP地址的配置 MCS1的配置如图9-29所示&#xff1a; 图9-29&#xff1a;配置MCS1的IP地址 R1的配置 <Huawe…...

程序员推荐的良心网站合集!

今天来给大家推荐几个程序员必看的国外良心网站合集。 IBM developer 技术性很强的博客网站&#xff0c;网站自带真实示例代码和架构解决方案&#xff0c;大家可以在上面找到适合自己的语言方向开始学习交流。 https://developer.ibm.com/ infoq 技术论坛社区&#xff0c;内…...

信息安全概论之《密码编码学与网络安全----原理与实践(第八版)》

前言&#xff1a;在信息安全概论课程的学习中&#xff0c;参考了《密码编码学与网络安全----原理与实践&#xff08;第八版&#xff09;》一书。以下内容为以课件为主要参考&#xff0c;课本内容与网络资源为辅助参考&#xff0c;学习该课程后作出的总结。 一、信息安全概述 1…...

跬智信息全新推出云原生数据底座玄武,助力国产化数据服务再次升级

2月28日&#xff0c;跬智信息&#xff08;Kyligence&#xff09;宣布全新推出国产化云原生数据底座开源项目玄武&#xff08;XUANWU&#xff09;&#xff0c;以助力企业加速数据平台上云&#xff0c;并实现国产化升级。玄武&#xff08;XUANWU&#xff09;是在容器化技术上形成…...

【离线数仓-9-数据仓库开发DWS层设计要点-DWS层汇总表以及数据装载】

离线数仓-9-数据仓库开发DWS层设计要点-DWS层汇总表以及数据装载离线数仓-9-数据仓库开发DWS层设计要点-DWS层汇总表以及数据装载一、交易域用户商品粒度订单最近1日/N日汇总表1.交易域用户商品粒度订单最近1日汇总表2.交易域用户商品粒度订单最近N日汇总表二、交易域优惠券粒度…...

我的十年编程路 序

算起来&#xff0c;从决定并从事编程开始&#xff0c;已十年有余了。 这十年是怎么算的呢&#xff1f; 我的本科是从2009年至2013年&#xff0c;现在回想起来&#xff0c;应该是从2012年下半年&#xff0c;也就是大四还未正式开始的时候决定从事Android开发。参加了培训班&am…...

xs 180

选择题(共180题,合计180.0分) 1. 你被任命为某项目的敏捷教练&#xff0c;为了更好的交付产品&#xff0c;你与团队召开会议&#xff0c;讨论项目过程中团队应该如何做到有效沟通。最有可能确定项目过程中主要以下列哪种方式沟通? A 团队成员在各自的办公室自行办公&#…...

时间序列分析 | BiLSTM双向长短期记忆神经网络时间序列预测(Matlab完整程序)

时间序列分析 | BiLSTM双向长短期记忆神经网络时间序列预测(Matlab完整程序) 目录 时间序列分析 | BiLSTM双向长短期记忆神经网络时间序列预测(Matlab完整程序)预测结果评价指标基本介绍完整程序参考资料预测结果 评价指标 训练集数据的R2为:0.99302 测试集数据的R2为&…...

0101基础-认证授权-springsecurity

文章目录1 基础概念1.1 认证1.2 会话1.3 jwt1.4 授权2 授权的数据模型3 RBAC3.1 基于角色的访问控制3.2 基于资源的访问控制4 名词解析4.1 SSO4.2 CAS4.3 联合登陆4.4 多端登录&#xff1a;同一账号不同终端登录4.5 OAuth1 基础概念 1.1 认证 认证是为了保护系统的隐私数据和…...

一文简单了解THD布局要求

一、什么是THD&#xff1f; THD指总谐波失真。谐波失真是指输出信号比输入信号多出的谐波成分。谐波失真是系统不完全线性造成的。所有附加谐波电平之和称为总谐波失真。总谐波失真与频率有关。一般说来&#xff0c;1000Hz频率处的总谐波失真最小&#xff0c;因此不少产品均以…...

[C++]多态

&#x1f941;作者&#xff1a; 华丞臧 &#x1f4d5;​​​​专栏&#xff1a;【C】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449;LeetCode 文章目录一、多态…...

中国版ChatGPT高潮即将到来,解密ChatGPT底层网络架构

2022年11月30日人工智能研究实验室OpenAI发布全新聊天机器人ChatGPT&#xff0c;在中国用户无法访问的前提下&#xff0c;上线仅两个月月活用户就突破了1亿。ChatGPT如同重磅炸弹&#xff0c;一时间火遍全球。面对这一万亿级市场机遇&#xff0c;在国内&#xff0c;无论是资本方…...

PingCAP 唐刘:一个咨询顾问对 TiDB Chat2Query Demo 提出的脑洞

导读 近日&#xff0c;TiDB Cloud 发布了 Chat2Query 功能&#xff0c;在 TiDB Cloud 上通过自然语言提问&#xff0c;即可生成相应的 SQL&#xff0c;通过 TiDB Cloud 对上传的任意数据集进行分析。Gartner 也在一份有关 ChatGPT 对数据分析影响研究的报告中提及了 PingCAP 的…...

力扣-销售分析III

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;1084. 销售分析III二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结…...

U-Boot 之七 详解 Driver Model 架构、配置、命令、初始化流程

U-Boot 在 2014 年 4 月参考 Linux Kernel 的驱动模型设计并引入了自己的 Driver Model&#xff08;官方简称 DM&#xff09; 驱动架构。这个驱动模型&#xff08;DM&#xff09;为驱动的定义和访问接口提供了统一的方法&#xff0c;提高了驱动之间的兼容性以及访问的标准性。 …...

大数据算法重点

1 大数据亚线性空间算法 场景&#xff1a;用二进制存储一个数字N&#xff0c;需要log(N)的空间 问题&#xff1a;如果N特别大而且这样的N又特别的多&#xff0c;该怎么办呢&#xff1f; 思路&#xff1a;减少一些准确性&#xff0c;从而节省更多的空间。 解决办法&#xff1a;使…...

【Eclipse】The import xxxx cannot be resolved 问题解决

在Eclipse使用过程中&#xff0c;某一个类明明存在&#xff0c;但是使用import导入时&#xff0c;却总是提示The import xxxx cannot be resolved的错误&#xff0c;解决办法如下&#xff1a; 点击Project->Clean......

LinkWeChat系统Docker版部署注意事项

具体部署手册&#xff1a;https://www.yuque.com/linkwechat/help/ffi7bu注意事项&#xff1a;启动类配置文件路径需要修改&#xff0c;各个模块启动类原配置如下&#xff1a;.properties("spring.config.name:bootstrap", "config/run/bootstrap.yml")各个…...

【高数】不定积分之有理函数的积分

文章目录前言有理函数积分的通用解法有理函数的特殊解法前言 这个专栏开始更新高等数学的解题方法&#xff0c;本专栏没有特别强调概念&#xff0c;主要是让大家熟悉考研中的一些题型以及如何求解 关键步骤用蓝色高亮提示 总结方法用红色高亮提示 注意事项用绿色高亮提示 希望…...

Java——数组

目录 前言 一、数组的定义 二、数组声明和创建 三、三种初始化及内存分析 Java内存分析 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 四、下标越界及小结 五、数组的使用 For-Each循环 数组作方法入参 数组作返回值 六、二维数组 七…...

产品分析|虎扑APP

不同于传统的体育新闻门户网站,虎扑以篮球社区起家,在经历了从体育论坛到体育新闻网站的发展后,又逐渐回归社区发展。 目前,虎扑汇聚了大量的男性用户,俨然成为了“互联网直男的自留地”。特立独行的发展方向使得虎扑不断发展壮大,同时也使得虎扑逐渐触碰到了行业天花板。…...

有限差分法-二维泊松方程及其Matlab程序实现

2.2 偏微分方程的差分解法 2.2.1 二维泊松方程 考虑区域 Ω \Omega Ω 上的二维泊松问题: { − ( ∂ 2...

【设计模式】6.代理模式

概述 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理访问目标对象 这样做的好处是&#xff1a;可以在目标对象实现的基础上,增强额外的功能操作&#xff0c;即扩展目标对象的功能。 被代理的对象可以是&#xff1a;远程对象、创建开销大的对象或需要安全…...

SRC挖掘之Access验证校验的漏洞挖掘

漏洞已修复&#xff0c;感谢某大佬的知识分享。 任意用户密码重置->可获取全校师生个人mingan信息 开局就是信息收集。 对于挖掘edu的信息收集 1.可尝试谷歌搜索语法&#xff0c;获取学号信息 2. 旁站的渗透获取 3. 学校的贴吧获取(大部分都是本校学生) 当然我就是闲&a…...

GG-21 100V 5A逆功率继电器

1 用途 GG-21逆功率继电器在出现逆功率时&#xff0c;从电网中断开交流发电机。 2 概述 逆功率继电器是基于感应式原理(具有旋转磁场)而工作。 继电器导磁体由两个磁路系统组成&#xff1a;上磁路系统和下磁路系统。电流线圈安装在上磁路系统中&#xff0c;它由接在发电机某相的…...

怎么开彩票网站做站长/微信推广引流加精准客户

rel"nofollow" <a href"https://tb.53kf.com/code/client/B73804BF00C1F3A446BD5A2624B81C5D5/1" rel"nofollow" class"btn-53 absolute">联系客服</a>...

网站分站的实现方法/优秀营销案例分享

&#xff08;推荐&#xff09;Nginx变量使用方法详解 - https://www.jianshu.com/p/44680c081ea0 顺风详解Nginx系列—Ngx中的变量: https://blog.csdn.net/ok449a6x1i6qq0g660fv/article/details/80276506 rewrite 的用法&#xff1a;https://blog.csdn.net/liuxiao723846/a…...

dedecms网站后台管理系统/国家免费技能培训平台

Apache http安装 下载地址Apache Haus Downloads 选择自己系统的Apache版本下载安装。 1. 设置根目录或端口 1.1 进入zip解压后的目录&#xff0c;打开conf目录下的httpd.conf文件; 1.2 修改目录&#xff1a; Define SRVROOT "/Apache24"; 修改主配置文件&…...

门户网站上的广告怎么做/厦门seo百度快照优化

一、如何从xib自定义一个CustomView 1&#xff09;首先创建继承自UIView的子类CustomView 2&#xff09;创建名字为CustomView的View的Interface文件 3&#xff09;在xib的资源文件中修改class为CustomView 4&#xff09;编辑xib&#xff0c;拖拽控件 代码如下&#xff1a; pro…...

网址域名注册申请/站长网站优化公司

3、HTML5 SVG 3D蝴蝶飞舞动画 这次我们要分享的这款HTML5动画简直就是逆天&#xff0c;利用SVG制作的3D蝴蝶飞舞动画&#xff0c;蝴蝶飞舞动画非常逼真&#xff0c;蝴蝶飞舞的路线是利用SVG构造的。另外&#xff0c;动画使用了一张立体感很强的天空背景图&#xff0c;让蝴蝶飞舞…...

网站的基本组成部分有哪些/seo专业培训seo专业培训

在使用Query EasyUI、Ext等框架开发项目的时候&#xff0c;经常会用到很多小的图标&#xff0c;常见几个图片应用方式总结如下&#xff1a; 一、在jQuery Easyui中添加小图标 1、添加图标的两小步&#xff1a; 先到themes目录下的icon.css中&#xff0c;添加新图标对应的CSS类选…...