ElasticSearch

1.ElasticSearch

1.1.业务分析

1.1.1.需求

假定有30万台设备在充电,每隔30秒上传充电进度

每秒上传 1万个充电进度数据

1天 24*60 * 60 * 1万 =86400w 大约8.6亿个数据

需要查询温度大于43度,告警,大于48度,必须停止充电

1.1.2.难点

数据量大

1.1.3.核心目标

高性能

1.2.技术解决方案

1.2.1.mysql模糊查询

正排索引:先找文档,再找词
从8亿行中查找温度大于48度的数据

1.2.2.Es 查询

分布式存储

在这里插入图片描述

分布式计算

案例:统计学生会主席票数
在这里插入图片描述

分词

字典:[华为,mate10,手机]
文本:华为mate10手机一台3300元
分词过程:华为,mate10

倒排索引

在这里插入图片描述
关键词列表
倒排索引是根据关键词找到内容,搜索速度快
正排索引是要的内容找到关键词

1.2.3.chatgpt小结

我是一名搜索开发工程师,用表格列出倒排索引和正排索引的区别,优点,缺点
告诉我elasticsearch的倒排索引包括包含那些内容

1.2.4.技术选型

充电进度数据特点是大量数据,必须用es存储

倒排索引,搜索速度快,。

1.3.实现

1.3.1.启动es

在这里插入图片描述

-1x删除虚拟机
在这里插入图片描述

检查es是否启动成功
http://192.168.64.140:9200
http://192.168.64.140:9200/_cat/nodes

1.3.2.ES-Head

\software\elasticSearch\es-head.crx.zip
解压缩
在 chrome 浏览器中选择“更多工具”–“扩展程序”
在“扩展程序”中确认开启了“开发者模式”
点击“加载已解压的扩展程序”
选择前面解压的插件目录
在浏览器中点击 elasticsearch-head 插件打开 head 界面,并连接 http://192.168.64.140:9200/
在这里插入图片描述

在这里插入图片描述

1.4.接口测试

1.4.1.查询分词

接口
_analyze

请求方法:POST

请求内容

{
"analyzer":"ik_smart",
"text":"华为mate10手机一台3300元"
}

在这里插入图片描述

1.4.2.创建索引

官方文档如下:
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html

请求方法:PUT

请求内容

{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0}
}

在这里插入图片描述

1.4.3.查询索引

Es-header查看
刷新后可看到节点信息
在这里插入图片描述

1.4.4.删除索引

在这里插入图片描述

1.4.5.添加映射

一个映射mapping中包含多个字段field
相当于表中的列,对象的属性

和表的区别是有些字段需要加分词,有些字段如id,身份证号不用加分词

https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html

接口
products/_mapping/

请求方法:PUT

请求内容

{
"properties": {
"id": {
"type": "long"},
"title": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"},
"category": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"},
"price": {
"type": "float"},
"city": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"},
"barcode": {
"type": "keyword"}}
}

在这里插入图片描述

1.4.6.查看映射

GET products/_mapping

在这里插入图片描述

1.4.7.添加文档(数据)
接口
/products/_doc/10035

请求方法:PUT

请求内容

{
"id": "10035",
"title": "BOSE SoundSport耳塞式运动耳机 重低音入耳式防脱降噪音乐耳机",
"category": "潮酷数码会场",
"price": "860.00",
"city": "浙江杭州",
"barcode": "526558749068"
}

在这里插入图片描述

提交一个新的数据

{
"id": "10036",
"title": "【送支架】Beats studio Wireless 2.0无线蓝牙录音师头戴式耳机",
"category": "潮酷数码会场",
"price": "2889.00",
"city": "上海",
"barcode": "37147009748"
}

1.4.8.查看文档

查看文档总数
在这里插入图片描述

查看所有文档内容
在这里插入图片描述

查看某个文档内容
GET /products/_doc/10036
在这里插入图片描述

1.4.9.查看分词结果

GET products/_doc/10035/_termvectors?fields=title
在这里插入图片描述

1.4.10.搜索

POST /products/_search

{
"query": {
"match": {
"title": "耳机"}}
}

修改title为无线蓝牙

1.4.11.chatgpt小结

列出elasticsearch每个数据类型的作用

1.5.搭建集群

1.5.1.快照流程图

在这里插入图片描述

在这里插入图片描述

1.5.2.用快照备份虚拟机

在这里插入图片描述

1.5.3.还原到logstash快照

在这里插入图片描述

1.5.4.启动三台es

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.5.5.查看资源占用

 docker stats

在这里插入图片描述

1.5.6.创建新闻索引

{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1}
}

创建新闻索引如下图:

在这里插入图片描述

节点信息如下图:
在这里插入图片描述

1.5.7.还原快照

在这里插入图片描述

1.5.8.chatgpt小结

查看docker每个容器内存占用多少m的命令是什么
vmware中的快照有什么用

1.6.搜索

1.6.1.创建索引

PUT pditems

{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0}
}

1.6.2.查看索引

在这里插入图片描述

1.6.3.创建映射

PUT pditems/_mapping

{
"properties": {
"id": {
"type": "long"},
"brand": {
"type": "text",
3"analyzer": "ik_smart"},
"title": {
"type": "text",
"analyzer": "ik_max_word"},
"sell_point": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"},
"price": {
"type": "float"},
"image": {
"type": "keyword"},
"cid": {
"type": "long"},
"status": {
"type": "byte"},
"created": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"},
"updated": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"}}
}

1.6.4.导入数据

curl -XPOST 'localhost:9200/pditems/_bulk' \-H 'Content-Type:application/json' \--data-binary @pditems.json

1.6.5.查看数据

查看数据个数

在这里插入图片描述

查看详细数据

在这里插入图片描述

1.6.6.搜索所有

POST /pditems/_search

{
"query": {
"match_all": {}}
}

在这里插入图片描述

1.6.7.分页

POST /pditems/_search

{
"query": {
"match_all": {}},
"from": 0,
"size": 1
}

POST /pditems/_search

{
"query": {
"match_all": {}},
"from": 1,
"size": 1
}

1.6.8.关键字搜索

POST /pditems/_search

{
"query": {
"match": {
"title": "电脑"}}
}

在这里插入图片描述

Fiter

{
"query": {
"bool": {
"must": [{
"match": {
"title": "电脑"}}],
"filter": [{
"range": {
"price": {
"gte": "6000"}}}]}}
} 

在这里插入图片描述

1.6.9.高亮显示

POST pditems/_search

{
"query": {
"multi_match": {
"query": "电脑",
"fields": [
"title",
"sell_point"]}},
"highlight": {
"pre_tags": "<span>",
"post_tags": "</span>",
"fields": {
"title": {},
"sell_point": {}}}
}

在这里插入图片描述

1.7.Java访问es

Spring-data官方文档
在这里插入图片描述
在这里插入图片描述

1.7.1.步骤分析

添加依赖
添加es配置
定义实体类
定义接口
单元测试

1.7.2.添加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

1.7.3.添加es配置

spring:# 连接ES搜索引擎地址
elasticsearch:uris: http://192.168.64.140:9200

1.7.4.定义实体类

@Document(indexName = "pditems")
public class PdItem {@Idprivate Long id;@Field(type = FieldType.Text)private String brand;@Field(type = FieldType.Text)private String title;@Field(type = FieldType.Text)private String sellPoint;@Field(type = FieldType.Float)private Float price;@Field(type = FieldType.Keyword)private String image;@Field(type = FieldType.Long)private Long cid;@Field(type = FieldType.Byte)private Byte status;@Field(type = FieldType.Text)private String created;@Field(type = FieldType.Text)private String updated;
}

1.7.5.定义接口

@Repository
public interface PdItemRepository extends ElasticsearchRepository<PdItem,String> {List<PdItem> findByTitle(String key);
}

1.7.6.单元测试

@SpringBootTest()
class EsqueryApplicationTests {@AutowiredPdItemRepository pdItemRepository;@Testpublic void testFind() {List<PdItem> itemList = pdItemRepository.findByTitle("电脑");System.out.println(itemList);}}

1.7.7.chatgpt小结

给出使用spring data查询elastic search的步骤
用一个表格告诉我elasticsearch数据类型和java类型的对应关系
根据上面elasticsearch的映射信息生成一个java实体类,给出java代码

1.8.温度查询

1.8.1.业务分析

1.8.2.步骤分析

添加依赖
添加es配置
创建索引,映射
定义实体类
定义接口
添加数据
查询数据
单元测试

1.8.3.创建索引charging

{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0}
}

Es-header–>复合查询
在这里插入图片描述

1.8.4.查看索引

在这里插入图片描述

1.8.5.创建映射

PUT charging/_mapping

{
"properties": {
"id": {
"type": "long"},
"userId": {
"type": "long"},
"gunId": {
"type": "long"},
"temperature": {
"type": "long"}}
}

1.8.6.查看映射

GET charging/_mapping

1.8.7.添加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

1.8.8.添加es配置

不同springboot版本中uris写法不一样,不要拷贝。
在application.yml中输入 uris,由idea生成

spring:# 连接ES搜索引擎地址elasticsearch:uris: http://192.168.64.140:9200

1.8.9.添加实体类

@Document(indexName = "charging")
public class ChargingProgress {@Idprivate Long id;@Field(type =FieldType.Long)private Long userId;@Field(type=FieldType.Long)private Long gunId;@Field(type=FieldType.Long)private Long temperature;Getter(),setter()
toString()
}

1.8.10.添加接口

创建es 包

@Repository
public interface ChargingProgressRepository  extends ElasticsearchRepository<ChargingProgress,Long> {}

1.8.11.添加测试依赖,测试目录

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

在这里插入图片描述

在这里插入图片描述

1.8.12.添加数据

添加的数据的id要变。否则添加不进去。

package com.ruoyi;import com.ruoyi.charge.domain.ChargingProgress;
import com.ruoyi.charge.es.ChargingProgressRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
public class ChargingProgressTests {@AutowiredChargingProgressRepository repository;@Testpublic void testSave(){ChargingProgress chargingProgress = new ChargingProgress();chargingProgress.setId(2L);chargingProgress.setUserId(2L);chargingProgress.setGunId(2L);chargingProgress.setTemperature(20L);repository.save(chargingProgress);}
}

在这里插入图片描述

1.8.13.查询数据

接口中添加方法

@Repository
public interface ChargingProgressRepository  extends ElasticsearchRepository<ChargingProgress,Long> {List<ChargingProgress> findByTemperatureGreaterThan(Long value);}
@Test
public void testFind(){List<ChargingProgress> list = repository.findByTemperatureGreaterThan(48L);System.out.println(list);
}

1.8.14.Controller

1.8.15.chatgpt小结

{ “properties”: { “id”: { “type”: “long” }, “userId”: { “type”: “long” }, “gunId”: { “type”: “long” }, “temperature”: { “type”: “long” } } } 根据上面的elasticsearch映射配置,生成一个java实体类

在elasticsearch接口中,要查询值大于30的数据,方法名如何写

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

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

相关文章

无法报错IP设置。请检查一个或者多个设置并重试

物理机设置VMnet8无法保存IP设置时 当你打开网络连接&#xff0c;会发现没有vmnet1和vmnet8&#xff0c;所以你在这边设置一直保存不了 第一&#xff1a; 去谷歌浏览器下载ccleaner 浏览器下载地址&#xff1a;CCleaner软件app官方版下载_多特软件站 百度网盘下载地址&#…

win服务器不能流量网页,Windows服务器:限制访问人数、访问流量和限制IP

如何限制访问你网站的IP地址 对于一些重要的服务器&#xff0c;我们并不想让所有人都能访问&#xff0c;或者将一些总是攻击网站的用户屏蔽掉。这就需要添加限制访问风站的IP地址了。 将网站的属性窗口切换到“目录安全性”标签&#xff0c;这时我们可以看到“IP地址及域名限制…

添加tcp/ip时,未能添加要求的功能,错误是:组策略阻止了这个程序。要获取详细信息,请与系统管理员联系

winr输入gpedit.msc 计算机设置->管理模板->Windows组件->Windows Installer->关闭windows Installer 未配置改为已启用。下面禁用windows installer改为从不->点击应用 如果出现找不到gpedit.msc 点击此链接下载gpedit.bat至桌面 拷贝此文件至桌面->右键此…

chatgpt赋能python:Python如何删除重复元素

Python如何删除重复元素 Python是一种简单易学的编程语言&#xff0c;被广泛运用于数据科学、机器学习、人工智能等领域。处理数据时&#xff0c;常常需要去重&#xff0c;Python提供了多种方法来实现这个任务。本文将介绍Python中删除重复元素的方法&#xff0c;并提供相关示…

chatgpt赋能python:Python列表中如何取出偶数

Python 列表中如何取出偶数 列表是 Python 中最常见的数据结构之一&#xff0c;它是由一系列有序元素组成的可变序列。在许多问题中&#xff0c;我们需要从一个列表中找出满足特定条件的元素。在本篇文章中&#xff0c;我们将学习如何从 Python 列表中取出偶数。 列表中的偶数…

抖音seo矩阵源码开发部署分享

1. 抖音seo矩阵源码/源代码搭建/源代码部署打包-支持二开 抖音SEO是指通过提高在抖音平台的关键词排名&#xff0c;来获取流量、获取客户的目的。抖音的流量主要分为付费流量、推荐流量和搜索流量&#xff0c;其中搜索流量因为付费太贵、上热门太累而成为另一种进入方式 &…

抖音短视频矩阵系统源码开发搭建技术开源分享

开发背景 抖音短视频矩阵系统源码开发采用模块化设计&#xff0c;包括账号分析、营销活动、数据监控、自动化管理等功能。通过综合分析账号数据&#xff0c;快速发现账号的优势和不足&#xff0c;并提供全面的营销方案&#xff0c;以提高账号曝光率和粉丝数量。同时&#xff0…

chatgpt赋能python:Python自动去重:实现更高效的数据清洗

Python自动去重&#xff1a;实现更高效的数据清洗 在数据处理的过程中&#xff0c;数据去重是一个常见而重要的步骤&#xff0c;特别是在爬虫、数据分析等领域。Python作为一种高效的编程语言&#xff0c;具备强大的数据处理能力&#xff0c;在去重方面也有着出色的表现。本文…

chatgpt赋能python:用Python实现高效去重操作

用Python实现高效去重操作 在数据处理中&#xff0c;经常会遇到数据重复的问题。如果不进行去重操作&#xff0c;会影响数据分析的准确性以及后续的数据挖掘操作。Python作为一种流行的数据处理语言&#xff0c;提供了多种去重方法。 去重方法 1.使用set()函数 在Python中&…

chatgpt赋能python:Python数据去重和排序

Python数据去重和排序 Python是一种高级编程语言&#xff0c;它具有简单易学的特点&#xff0c;并拥有广泛的应用领域。在数据处理方面&#xff0c;Python拥有丰富的函数库&#xff0c;可以方便地进行数据去重和排序。本文将介绍Python中的数据去重和排序的方法&#xff0c;以…

chatgpt赋能python:Python去重-如何高效地处理重复数据

Python去重 - 如何高效地处理重复数据 在数据处理过程中&#xff0c;重复数据可能会导致很多问题&#xff0c;如降低计算效率、影响数据质量等。因此&#xff0c;数据去重是一个非常重要的任务&#xff0c;特别是在大数据处理中更是如此。Python作为一种流行的编程语言&#x…

chatgpt赋能python:Python去重和排序操作

Python去重和排序操作 Python作为一种使用广泛的编程语言&#xff0c;经常被用于数据处理和分析。在数据处理的过程中&#xff0c;去重和排序是非常重要的操作。Python提供了很多内建方法和库函数可以用来进行这些操作&#xff0c;本文将介绍Python中的去重和排序操作。 Pyth…

chatgpt赋能python:Python去重方法大全:从初级到高级

Python去重方法大全&#xff1a;从初级到高级 Python是当今最流行的编程语言之一&#xff0c;拥有许多强大的功能和特性。其中之一就是去重功能&#xff0c;Python语言提供了多种去重方法&#xff0c;为编程带来了极大的便利。本文将详细介绍Python的去重功能&#xff0c;包含…

图灵测试,时至今日还有意义吗?

来源&#xff1a;学术头条 我们必须承认&#xff0c;机器运行时的很多中间状态&#xff0c;是在设计初始指令时无法预见的。机器自己也会感悟出很多知识。在这种情況下&#xff0c;我们有必要将机器视为智能的。 艾伦图灵 图灵测试由人工智能之父—艾伦图灵提出&#xff0c;指测…

体验了一把ChatGPT4

不得不说ChatGPT对我的学习效率有极大的提升&#xff0c;它就像一位老师&#xff0c;不管有什么问题&#xff0c;都可以得到很好的答案。但是前段时间gpt3.5账号被封了&#xff0c;最近搞了个gpt4。市面上目前好像没啥可以白嫖的账号&#xff0c;基本都是免费使用几次&#xff…

无需越狱手机,下载越狱版本IPA的方法

这两天在看一些逆向反编译的知识&#xff0c;很多工具的使用都是针对砸壳的ipa包&#xff0c;所以在了解这一部分的前提就需要&#xff1a; 越狱手机&#xff0c;下载越狱的IPA文件。学会对正版IPA进行脱壳。 没有越狱手机又不会脱壳技术的我&#xff0c;找到了一种简单的方法…

im不丢“离线消息”设计

个人博客请访问 http://www.x0100.top 问题&#xff1a;接收方不在线时&#xff0c;消息发送的流程是怎么样的&#xff1f; 回答&#xff1a;如上图所述&#xff0c; &#xff08;1&#xff09;用户A发送消息给用户B &#xff08;2&#xff09;服务器查看用户B的状态为off…

测试版降级后软件还在么,2分钟告诉你如何将iOS测试版降级到正式版本

原标题&#xff1a;2分钟告诉你如何将iOS测试版降级到正式版本 话说亓纪为了体验iOS 11最新系统&#xff0c;经常会往返于iOS 11测试版和正式版系统之间。每次发一篇关于测试版系统该不该升级的文章时&#xff0c;总会有小童鞋来留言或者私信问亓纪关于iOS 11测试版如何降级到正…

iPhoneX利用unc0ver来越狱iOS12

在iOS11时代,有两种越狱的方式,一种是unc0ver,一种是electra,它两的历史还是挺有趣的,unc0ver的开发者本来是electra的成员,但由于不满某些东西,所以自己出来又搞了unc0ver,说是改进了越狱错误显示等,更加友好了,不过我亲身体验了两种,发现unc0ver各种不稳定,并不是像他们自己标…

iOS手机绕过App的越狱检测

iOS越狱之后&#xff0c;某些App会检测到iOS设备已越狱后&#xff0c;一些功能就会被禁用&#xff0c;导致无法正常使用App里面的所有功能 1.iOS绕过越狱检测的所需环境 Cydia 、Liberty 2.添加Cydia源 (1).在手机桌面上找到Cydia的图标&#xff0c;点击进入 (2).先点击下方软…