ElasticSearch:数据的魔法世界

在这里插入图片描述

欢迎来到ElasticSearch的奇妙之旅!在这个充满魔法的搜索引擎世界中,数据不再是沉闷的数字和字母,而是变得充满活力和灵动。无论你是刚刚踏入数据探索的小白,还是已经对搜索引擎有所了解的行者,本篇博客都将为你揭示ElasticSearch的神奇之处。

ElasticSearch简介:探秘搜索引擎的奇妙

ElasticSearch,这个名字听起来像是来自魔法世界的秘密组织,但实际上,它是一款强大的开源搜索引擎。ElasticSearch基于Lucene构建而成,不仅仅是搜索引擎,还是实时的分布式文档存储,具备全文搜索和分析能力。

魔法1:索引与文档的魔法花园

在ElasticSearch的王国里,数据被组织成索引和文档的结构。索引类似于传统数据库中的表,而文档则是我们实际存储的数据单元。让我们一起来创造一些魔法吧!

首先,让我们创造一个名为products的索引:

PUT /products
{"mappings": {"properties": {"name": { "type": "text" },"price": { "type": "float" },"category": { "type": "keyword" }}}
}

这段魔法咒语创建了一个名为products的索引,并定义了文档中的字段类型。接下来,让我们添加一些商品的魔法文档:

POST /products/_doc/1
{"name": "Magic Wand","price": 19.99,"category": "Enchantment"
}POST /products/_doc/2
{"name": "Invisibility Cloak","price": 99.99,"category": "Apparel"
}POST /products/_doc/3
{"name": "Potion of Wisdom","price": 49.99,"category": "Consumables"
}

通过这些魔法文档,我们在products索引中创造了一些商品的奇妙信息。

魔法2:搜索与查询的奇迹

ElasticSearch最强大的能力之一就是其搜索和查询的魔法。让我们通过一些简单的咒语感受一下:

全文搜索咒语:

如果我们想要找到所有包含关键词"cloak"的商品:

GET /products/_search
{"query": {"match": {"name": "cloak"}}
}

这个咒语将返回所有商品中名称包含"cloak"的文档。

精确匹配咒语:

如果我们想要查找属于"Apparel"类别的商品:

GET /products/_search
{"query": {"term": {"category.keyword": "Apparel"}}
}

这个咒语将返回所有类别为"Apparel"的商品文档。

范围查询咒语:

如果我们想要查找价格在50到100之间的商品:

GET /products/_search
{"query": {"range": {"price": {"gte": 50,"lte": 100}}}
}

这个咒语将返回价格在50到100之间的所有商品文档。

魔法3:聚合与分析的仪式

ElasticSearch不仅仅能找到数据,还能进行聚合和分析的魔法仪式。通过聚合,我们能够获得关于数据的统计信息,进行数据挖掘和分析。

聚合统计仪式:

假设我们想要统计每个类别的商品数量:

GET /products/_search
{"aggs": {"categories": {"terms": {"field": "category.keyword"}}}
}

这个仪式将返回每个类别的商品数量统计。

范围聚合仪式:

如果我们想要统计商品价格的分布情况:

GET /products/_search
{"aggs": {"price_ranges": {"range": {"field": "price","ranges": [{ "to": 50 },{ "from": 50, "to": 100 },{ "from": 100 }]}}}
}

这个仪式将返回商品价格在不同范围内的数量统计。

ElasticSearch与应用程序的交响乐

在实际应用中,我们往往需要将ElasticSearch与我们的应用程序交织在一起,共同奏响数据的交响乐。在Java应用中,我们可以使用Spring Data Elasticsearch来实现这样的集成。

首先,添加相关的依赖到你的项目中:

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

然后,配置ElasticSearch连接信息:

spring:data:elasticsearch:cluster-name: your-cluster-namecluster-nodes: your-cluster-nodes

接下来,创建一个实体类,用于映射ElasticSearch中的文档:

@Document(indexName = "products")
public class Product {@Idprivate String id;private String name;private float price;private String category;// 省略getter和setter=
}

通过@Document注解,我们指定了文档所属的索引名称。@Id注解用于标识文档的唯一标识。

最后,创建一个Repository接口,用于执行查询操作:

public interface ProductRepository extends ElasticsearchRepository<Product, String> {List<Product> findByCategory(String category);
}

通过继承ElasticsearchRepository接口,我们能够轻松地执行各种查询操作,而不需要编写具体的实现代码。

小结:数据的奇妙之旅

通过这篇博客,我们只是轻轻触摸了ElasticSearch的表面,探索了其强大的搜索、查询、聚合和分析能力。ElasticSearch不仅是一款搜索引擎,更是一项让数据变得有趣而强大的技术。希望在这段奇妙的旅程中,你能够对ElasticSearch有了初步的了解,并愿意深入挖掘其更多的神奇之处。在数据的魔法世界里,让我们共同奏响交响乐,感受搜索引擎的魅力。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

unity内存优化之AB包篇(微信小游戏)

1.搭建资源服务器使用(HFS软件(https://www.pianshen.com/article/54621708008/)) using System.Collections; using System.Collections.Generic; using UnityEngine;using System;public class Singleton<T> where T : class, new() {private static readonly Lazy<…

【集成开发环境】-VS Code:C/C++ 环境配置

简介 VS Code&#xff0c;全称Visual Studio Code&#xff0c;是一款由微软开发的跨平台源代码编辑器。它支持Windows、Linux和macOS等操作系统&#xff0c;并且具有轻量级、高效、可扩展等特点&#xff0c;深受广大开发者的喜爱。 VS Code拥有丰富的功能特性&#xff0c;包括…

计算机三级网络技术综合题第三题、第四题详细解析

第三大题 DHCP报文分析&#xff08;10分&#xff09; 一、DHCP工作流程&#xff08;一般情况下&#xff09; 报文摘要 对应上面报文1—4 报文1、3DHCP&#xff1a;Request&#xff1b; 报文2、4DHCP&#xff1a;Reply。 例题&#xff08;第三套&#xff09;&#xff1a;在一…

程序员入行忠告!

点击下方“JavaEdge”&#xff0c;选择“设为星标” 第一时间关注技术干货&#xff01; 关注我&#xff0c;紧跟本系列专栏文章&#xff0c;咱们下篇再续&#xff01; 作者简介&#xff1a;魔都技术专家兼架构&#xff0c;多家大厂后端一线研发经验&#xff0c;各大技术社区头部…

十五、自回归(AutoRegressive)和自编码(AutoEncoding)语言模型

参考自回归语言模型&#xff08;AR&#xff09;和自编码语言模型&#xff08;AE&#xff09; 1 自回归语言模型&#xff08; AR&#xff09; 自回归语言模型&#xff08;AR&#xff09;就是根据上文内容&#xff08;或下文内容&#xff09;预测下一个&#xff08;或前一个&…

安装OpenEBS,镜像总是报错ImagePullBackOff或者ErrImagePull的解决方法

按照 KubeSphere 官方文档安装 OpenEBS&#xff0c;镜像总是报错ImagePullBackOff或者ErrImagePull的解决方法 helm 有很多更换 源 的文章&#xff0c;有一些是写更换阿里云的源&#xff0c;但是阿里云的源根本没更新OpenEBS的镜像。 在网上找到1个可用的源&#xff1a; 可用的…

探讨TCP的可靠性以及三次握手的奥秘

&#x1f31f; 欢迎来到 我的博客&#xff01; &#x1f308; &#x1f4a1; 探索未知, 分享知识 !&#x1f4ab; 本文目录 1. TCP的可靠性机制1.2可靠性的基础上,尽可能得提高效率 2. TCP三次握手过程3. 为何不是四次握手&#xff1f; 在互联网的复杂世界中&#xff0c;TCP&am…

基于springboot的高校教师教研信息填报系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

亚马逊云科技Glue

Glue 最重要的部分&#xff0c; ETL&#xff1a;用于从 A 点&#xff08;我们的源数据&#xff09;提取、转换和加载数据到 B 点&#xff08;目标文件或数据存储库&#xff09;。 AWS Glue 会为您执行大量此类工作。 转换通常是更繁重的工作&#xff0c;需要从各种来源进行组合…

【嵌入式DIY实例】-自动割草机器

自动割草机器 文章目录 自动割草机器1、割草机器介绍2、硬件准备3、功能设计4、硬件接线5、代码实现本文将介绍如何使用 Arduino 构建一个简易自动割草机机器人或割草机机器人。该机器人可以自动剪掉花园里多余的草。如果花园里有障碍物,它会自动改变方向。帮助以减少人力。 警…

【Elasticsearch】windows安装elasticsearch教程及遇到的坑

一、安装参考 1、安装参考&#xff1a;ES的安装使用(windows版) elasticsearch的下载地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch ik分词器的下载地址&#xff1a;https://github.com/medcl/elasticsearch-analysis-ik/releases kibana可视化工具下载…

网络编程套接字——实现简单的UDP网络程序

目录 1、预备知识 1.1、认识端口号 1.2、端口号 vs 进程pid 1.3、认识TCP协议 1.4、认识UDP协议 1.5、网络字节序 2、socket编程接口 2.1、socket常见API 2.2、sockaddr结构 3、实现一个简易的UDP服务器和客户端通信 log.hpp UdpServer.hpp UdpClient.cc Main.cc…

upload-labs通关方式

pass-1 通过弹窗可推断此关卡的语言大概率为js&#xff0c;因此得出两种解决办法 方法一 浏览器禁用js 关闭后就逃出了js的验证就可以正常php文件 上传成功后打开图片链接根据你写的一句话木马执行它&#xff0c;我这里采用phpinfo&#xff08;&#xff09; 方法二 在控制台…

【网络编程基础(一)】网络基础和SOCKET

这里写目录标题 1、网络三要素2、IPV4和IPV6区别3、网络交互3.1、交互模型图3.2、基础通信协议3.3、OSI参考模型与TCP/IP参考模型对应关系 4、SOCKET网络套接字4.1、SOCKET分类4.2、基于流式套接字的编程流程4.3、网络通信雏形4.4、socket函数4.4.1、socket函数示例 4.5、bind函…

蓝桥杯小白赛第 7 场 3.奇偶排序(sort排序 + 双数组)

思路&#xff1a;在第一次看到这道题的时候我第一想法是用冒泡&#xff0c;但好像我的水平还不允许我写出来。我又读了遍题目发现它的数据很小&#xff0c;我就寻思着把它分成奇偶两部分。应该怎么分呢&#xff1f; 当然在读入的时候把这个问题解决就最好了。正好它的数据范围…

【相关问题解答1】bert中文文本摘要代码:import时无法找到包时,几个潜在的原因和解决方法

【相关问题解答1】bert中文文本摘要代码 写在最前面问题1问题描述一些建议import时无法找到包时&#xff0c;几个潜在的原因和解决方法1. 模块或包的命名冲突解决方法&#xff1a; 2. 错误的导入路径解决方法&#xff1a; 3. 第三方库的使用错误解决方法&#xff1a; 4. 包未正…

C++算法学习心得八.动态规划算法(4)

1.零钱兑换&#xff08;322题&#xff09; 题目描述&#xff1a; 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1。 你可以认为每种硬币的数量是无限的。…

CSDN学习笔记总索引(2024)——我的创作纪念日(1024)

2021-05-21至2024-03-17笔记&#xff0c;收集并展示浏览阅读点赞收藏等数据。 (本笔记适合初通Python&#xff0c;对其基本数据类型字符串str、列表list、元组tuple、字典dict初步了解&#xff0c;认识Linux获取Html文本指令crul、会使正则模块re的coder翻阅) 【学习的细节是欢…

VS2019加QT5.14中Please assign a Qt installation in ‘Qt Project Settings‘.问题的解决

第一篇&#xff1a; 原文链接&#xff1a;https://blog.csdn.net/aoxuestudy/article/details/124312629 error:There’ no Qt version assigned to project mdi.vcxproj for configuration release/x64.Please assign a Qt installation in “Qt Project Settings”. 一、分…

Linux基础开发工具之yum与vim

1. Linux软件包管理器——yum 1.1 什么是软件包&#xff1f; 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, …