当前位置: 首页 > 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;提高了驱动之间的兼容性以及访问的标准性。 …...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...