ElastaticSearch ---- es基础概念及命令

Elasticsearch 介绍

  • Elasticsearch 是一个高度可扩展且开源的全文检索和分析引擎。可以快速且近实时地存储,检索以及分析海量数据。

Elasticsearch 应用场景:

  • 提供搜索和自动完成功能。

  • ELK(Elasticsearch/Logstash/Kibana ),Logstash收集数据或日志,Elasticsearch聚合统计分析数据,Kibana可视化。

为什么不用Mysql?

  • 为什么不用Mysql?

解答:Mysql在做模糊查询时,使用左模糊不会走索引,会遍历全表,速度比较慢。

Mysql数据库并不支持分词。

  • Elasticsearch搜索到的数据,是可以根据评分排序或过滤的。

  • Elasticsearch会对数据进行分词,支持相关性查询,不是完全准确的关键字也能搜出相关的结果

Elasticsearch底层

  • Elasticsearch是基于倒排索引的。

倒排索引(Inverted index),也常被称为反向索引,被用来存储在全文搜索下某个单词在文档中的存储位置的映射。
它是文档检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。

一、概念

  • Index(索引) :

Elastic 数据管理的顶层单位就叫做 Index(索引)。类似单个数据库。

  • Document(文档):

Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index。

相当于关系型数据库中的表中的一行记录。

Document 使用 JSON 格式表示。

  • Type(类型):

Type其相当于关系型数据库中的表。

Document 可以分组。比如weather这个Index里面,可以按城市分组(北京和上海),也可以按气候分组。

这种分组就叫做 Type,它是虚拟的逻辑分组,用来过滤 Document。

不同的 Type 中同一个字段 应该有相似的结构(schema),举例来说,id字段不能在这个组是字符串,在另一个组是数值。这是与关系型数据库的表的一个区别。

Type是通过mapping定义的。mapping中主要包括字段名、字段数据类型和字段索引类型这3个方面的定义,相当于关系型数据库中的schema。

  • Node 与 Cluster :

单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。

  • _shards(分片):

分片。每个索引有一个或多个分片,索引的数据被分配到各个分片上,分片有助于横向扩展,N个分片会被尽可能平均地(rebalance)分配在不同的节点上。

水平拓展,减小单个节点的压力,提高性能。

  • replica(副本):

故障转移,容错。在 shard/node 故障的情况下提供了高可用性。

二、常用请求:

  • POST请求 :新建记录

  • PUT请求: 更新记录
    PUT和POST的区别,详情见: https://www.cnblogs.com/zklidd/p/6114302.html

  • DELETE请求 :删除记录。

  • GET 请求:查看记录

三、常用命令

  • es查询所有记录:

使用 GET 方法,直接请求/索引名称/类型名称/_search,就会返回所有记录。

  • es根据id查询:

使用 GET 方法,直接请求 /索引名称/类型名称/文档Id。

	GET 索引名称/类型名称/具体id

如果是在服务器中,也可以使用以下命令:

curl -XGET http://es集群ip:9200/索引名称/类型名称/具体id?pretty  
  • es查看所有索引:

以下的v是用来要求在结果中返回表头的.

 GET /_cat/indices?v 
  • es新增记录:

向指定的 /索引名称/类型名称/ 发送 POST 请求,就可以在 Index 里面新增一条记录。比如,向/accounts/person发送请求,就可以新增一条人员记录。

POST /索引名称/类型名称/

示例如下:

POST /accounts/person
{"name": "lin","date": "2020-10-24","order_hour": "08","day": "20201024","area": "广东"
}

也可以在服务器中,直接用curl去新增数据,示例如下:

curl -XPOST http://es集群ip:9200/accounts/person -d '{"name": "lin","date": "2020-10-24","order_hour": "08","day": "20201024","area": "广东"}'
  • es删除记录:
DELETE /索引名称/类型名称/具体的id
  • es新增索引:
PUT /book      #put /book 代表put请求,含义是添加一个索引,book是索引名
{"settings": {   #settings指的是设置索引,库的属性"number_of_replicas": 1     #number_of_replicas:是备份数量, "number_of_shards": 5     #number_of_shards:是分片数量},"mappings": {   #mappings是映射的含义 mappings里面包含类型也就是表的定义;"novel":{   #novel 是自定义的指的是类型名,相当于表名"properties":{    #properties 是属性的意思;相当于里面放着表的属性也就是列名"name":{      #name是表的其中一个字段;"type":"text",    #type是表中name这个字段的数据类型"analyzer":"ik_max_word",  #analyzer 表示分词的类型;"index":true     #index含义是是否要被检索到,默认是true},"author":{    	 # author是一个字段名;"type":"keyword",   #keyword 是这个字段的类型;"index":true},"price":{ "type":"long","index":true},"pubdate":{"type":"date",   #pubdate 的格式是date,日期类型;"index":true, "format":"yyyy-MM-dd HH:mm:ss"   #format指的是日期的格式类型;},"decr":{"type":"text","index":true},"count":{"type":"long","index":false}}}}
}

参考资料:https://blog.csdn.net/weixin_52578409/article/details/110493719

  • es新增字段:
    格式如下:
PUT /索引名称/_mapping/类型名称{
"properties": {"属性名称": {"type": "long"}
}
}

示例如下:

PUT /index_order/_mapping/type_order
{
"properties": {"delivery15kg": {"type": "long"}
}
}
  • 参数 pretty=true 表示以易读的格式返回。
GET 索引名称/_search?pretty=true
  • _search:

/_search:所有索引,所有type下的所有数据都搜索出来;

/索引名称/_search:指定一个index,搜索其下所有type的数据;

/索引名称1,索引名称2/_search:同时搜索两个index下的数据;

/*索引/_search:按照通配符星号去匹配多个索引;

/索引名称/类型名称/_search:搜索一个index下指定的type的数据;

/索引名称/类型名称1,类型名称2/_search:可以搜索一个index下多个type的数据;

/索引名称1,索引名称2/类型名称1,类型名称2/_search:搜索多个index下的多个type的数据;

/_all/类型名称1,类型名称2/_search:_all,可以代表搜索所有index下的指定type的数据;

  • es 查询索引的字段结构/数据结构
GET /索引名称/_mapping
  • es 添加/更新别名:
PUT /索引名称/_alias/别名名称
  • es 查询别名:
GET /索引名称/_alias
  • 分页搜索的语法size:

GET /_search?size=10

GET /_search?size=10&from=0

GET /_search?size=10&from=20

四、返回内容:

格式如下:

{"took": 80,"timed_out": false,"_shards": {"total": 3,"successful": 3,"failed": 0},"hits": {"total": 19,"max_score": 1,"hits": [{"_index": "order_dept","_type": "order_dept_hour","_id": "007","_score": 1,"_source": {"id": "20250816027R0030","dept_code": "020","order_date": "2025-08-27","order_num": 520,"hour": "14"}}}

具体的解释如下:

took字段表示该操作的耗时(单位为毫秒),timed_out字段表示是否超时,

hits字段表示命中的记录,里面子字段的含义如下。

    * total:返回记录数,本例是2条。* max_score:最高的匹配程度,本例是1.0。* hits:返回的记录组成的数组。* _score字段,表示匹配的程度,分值越高就代表越匹配。* _source: 表示字段。

es 7.0 增删改查

es 7.0中只有索引和文档(记录),没有类型(type)了。

详情见: https://www.cnblogs.com/expiator/p/17480944.html

参考资料:

http://blog.itpub.net/29715045/viewspace-2653369/

https://blog.csdn.net/qq_29580525/article/details/80908523

https://www.cnblogs.com/ghj1976/p/5293250.html

http://doc.codingdict.com/elasticsearch/0/

https://www.zhihu.com/question/323811022

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

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

相关文章

mysql基础 --子查询

文章目录 子查询子查询案例 子查询 一个查询语句,嵌套在另一个查询语句内部;子查询先执行,其结果被外层主查询使用;子查询放入括号内;子查询放在比较条件的右侧;子查询返回一条,为单行子查询(对…

python工具HIKVISION视频编码设备接入网关任意文件下载

python工具 构造payload /serverLog/downFile.php?fileName../web/html/serverLog/downFile.php漏洞证明 文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。 免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何…

PyTorch技术和深度学习——三、深度学习快速入门

文章目录 1.线性回归1)介绍2)加载自由泳冠军数据集3)从0开始实现线性回归模型4)使用自动求导训练线性回归模型5)使用优化器训练线性回归模型 2.使用torch.nn模块构建线性回归模型1)使用torch.nn.Linear训练…

通过SD卡给某摄像头植入可控程序

0x01. 摄像头卡刷初体验 最近研究了手上一台摄像头的sd卡刷机功能,该摄像头只支持fat32格式的sd卡,所以需要先把sd卡格式化为fat32,另外微软把fat32限制了最大容量32G,所以也只能用不大于32G的sd卡来刷机。 这里使用32G的sd卡来…

基于樽海鞘群算法优化概率神经网络PNN的分类预测 - 附代码

基于樽海鞘群算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于樽海鞘群算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于樽海鞘群优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

vColorPicker与vue3-colorPicker——基于 Vue 的颜色选择器插件

文章目录 前言样例特点 一、使用步骤?1. 安装2.引入3.在项目中使用 vcolorpicker 二、选项三、事件四、问题反馈问题所在安装引入例子效果图 前言 vColorPicker——官网 vColorPicker——GitHub 样例 vColorPicker是基于 Vue 的一款颜色选择器插件,仿照…

【QT】续写文本存储到文件

续写文本到文件 使用标记QFile::WriteOnly| QIODevice::Append打开文件 QString strConfigFile "C:\\Users\\xiaosheng\\Desktop\\Log.txt"; QFile file1(strConfigFile); QString strLog2; strLog2 "strKeyId" "\n"; if (file1.open(QFile…

【入门Flink】- 10基于时间的双流联合(join)

统计固定时间内两条流数据的匹配情况,需要自定义来实现——可以用窗口(window)来表示。为了更方便地实现基于时间的合流操作,Flink 的 DataStrema API 提供了内置的 join 算子。 窗口联结(Window Join) 一…

面向对象基础(以python语言为例)

1、定义一个类;实例化类的对象;调用类中的方法 #定义一个类 class Student:#类方法(即函数)def study(self,course_name):print(f学生正在学习{course_name})def play(self):print("xx学生正在玩游戏")#实例化&#xf…

Linux c/c++服务器开发实践

在Linux C开发环境中,通常有两种方式来开发多线程程序,一种是利用POSIX多线程 API函数来开发多线程程序,另外一种是利用C自带线程类来开发程序。 常见的与线程相关的基本API函数: API函数含义pthread_create创建线程pthread_exi…

从0到1实现一个前端监控系统(附源码)

目录 一、从0开始 二、上报数据方法 三、上报时机 四、性能数据收集上报 收集上报FP 收集上报FCP 收集上报LCP 收集上报DOMContentLoaded 收集上报onload数据 收集上报资源加载时间 收集上报接口请求时间 五、错误数据收集上报 收集上报资源加载错误 收集上报js错…

详解JS中的对象

1、语法 对象的声明有两种形式,声明(文字)形式和构造形式 // 文字形式 var mtObj {key:value... } // 构造形式 var myObj new Object() myObj.key value构造形式与文字形式生成的对象是一样的,唯一的区别在于文字形式可以添…

Linux下C++调用python脚本实现LDAP协议通过TNLM认证连接到AD服务器

1.前言 首先要实现这个功能,必须先搞懂如何通过C调用python脚本文件最为关键,因为两者的环境不同。本质上是在 c 中启动了一个 python 解释器,由解释器对 python 相关的代码进行执行,执行完毕后释放资源。 2 模块功能 2.1python…

Windows server 2008 R2 IIS搭建ASP网站教程

一、安装应用程序服务器 提示安装成功 二、添加角色服务asp 三、asp网站配置 放入源码 设置网站首页为index.asp: 设置应用程序池 四、设置网站目录属性 五、access数据库连接配置 Cd c:\Windows\System32\inetsrv appcmd list apppool /xml | appcmd set apppool /…

K9203 996920302 面向DNP3的网络安全解决方案

K9203 996920302 面向DNP3的网络安全解决方案 2014年ISA卓越技术创新奖获得者,超电子,3eTI的CyberFence工业防火墙解决方案提供强大加密和应用程序级深度数据包检测(DPI)功能。最近,3eTI为其CyberFence产品线增加了DNP3(分布式网络协议)支持…

替代huggingface下载大模型的站点

0. 引入 huggingface是个好网站,大模型的下载都得靠他,但是网络问题一直是一言难尽,所以只好找找其他替代品。目前发现的代替网站如下,后续如有新发现,还会再来更新到这里。 1. aliendao https://aliendao.cn/ 是一…

SpringBoot Web开发

SpringBoot3-Web开发 SpringBoot的Web开发能力,由SpringMVC提供。 Web开发的三种方式 方式处理过程注意事项实现效果全自动直接编写控制逻辑全部使用自动给配置默认效果手自一体Configuration、 配置WebMvcConfigurer、 配置WebMvcRegistrations不要标注 EnableWeb…

【Linux】:静动态库

静动态库 一.静态库1.设计静态库2.生成静态库3.发布静态库4.使用静态库 二.动态库1.设计动态库2.生成和发布动态库3.使用 一.静态库 程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。 静态库链接格式:libxxx.a(前缀是lib,后缀是…

2023-11-12

今日比较摆烂, 但是把自写管道的原理搞懂了, 主要是把 exp 完完全全看懂了, 还不错. 然后就没干啥了. 明日计划: 学校的作业. AFL 源码. 我真是服了我自己了, AFL 源码搁多久了, 操操操 然后把 seccomp 重新学习下

基于安卓android微信小程序的四六级助手系统

项目介绍 随着我国教育需求不断增加,高校教育资源有限,教育经费相对不足的情况下,利用现代信息技术发展高等教育,不仅充分利用了优秀的教育资源,而且为更多的人提供接受高等教育的机会,同时这也是极大促进…