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-name
      cluster-nodes: your-cluster-nodes

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

@Document(indexName = "products")
public class Product {
    @Id
    private 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ThingsBoard Edge 设备控制

文章目录 一、RPC 功能1.服务端 RPC2.客户端 RPC3.MQTT RPC API3.1.服务端RPC3.2.客户端RPC 二、设备控制1.环境准备2.创建设备3.服务端PRC3.1.RPC消息主题3.2.程序源码3.3.创建仪表板3.4.边缘分配仪表板3.5.测试 4.客户端RPC4.1.RPC消息主题4.2.程序源码4.3.规则链4.4.测试 Th…

十四、GPT

在GPT-1之前&#xff0c;传统的 NLP 模型往往使用大量的数据对有监督的模型进行任务相关的模型训练&#xff0c;但是这种有监督学习的任务存在两个缺点&#xff1a;预训练语言模型之GPT 需要大量的标注数据&#xff0c;高质量的标注数据往往很难获得&#xff0c;因为在很多任务…

Qt for Mac阻止MacOS系统休眠

Qt开发的应用程序如果电脑休眠了会影响软件的使用&#xff0c;因此在软件的使用过程中需要防止电脑休眠&#xff0c;在Win上有专门的API进行处理&#xff0c;在Mac上也必需使用Mac平台自身的API&#xff0c;本篇介绍在Mac平台下使用Qt阻止Mac系统休眠。 要调用Mac系统的API&am…

vulhub中GitLab 任意文件读取漏洞复现(CVE-2016-9086)

GitLab是一款Ruby开发的Git项目管理平台。在8.9版本后添加的“导出、导入项目”功能&#xff0c;因为没有处理好压缩包中的软连接&#xff0c;已登录用户可以利用这个功能读取服务器上的任意文件。 环境运行后&#xff0c;访问http://your-ip:8080即可查看GitLab主页&#xff0…

PC电脑如何使用HDMI连接小米电视当显示屏

使用HDMI连接好当时和电脑&#xff0c;HDMI2.0会更清晰&#xff1b;小米电视会自动弹窗提示你有HDMI 接口连接&#xff0c;或者你进入信号源进行选择即可&#xff1b;需要平时我们电脑的显示器正常连接&#xff0c;然后按 win p &#xff0c;选择 扩展 屏幕&#xff1b; 进入设…

27-2 文件上传漏洞 - 前端绕过

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 前端绕过思路 - 禁用 JavaScript: 背景: 当前开发行业大多采用前后端分离模式,后端使用多种开发语言如 PHP、Java 等,而前端主要使用 JavaScript(JS)。因此,禁用 JavaScrip…

开设新量子计算中心!IonQ 全力加速量子商业化

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨慕一 编译/排版丨浪味仙 沛贤 深度好文&#xff1a;1000字丨8分钟阅读 近日&#xff0c;量子计算公司IonQ对外宣布&#xff0c;将在华盛顿开设一家新量子中心。公告里还提出&#xff0c…

html5黑色大气的个人博客全屏滚动个人主页源码HTML+JS+CSS

html5黑色大气的个人博客全屏滚动个人主页源码HTMLJSCSS

软件测试 自动化测试selenium 基础篇

文章目录 1. 什么是自动化测试&#xff1f;1.1 自动化分类 2. 什么是 Selenium &#xff1f;3. 为什么使用 Selenium &#xff1f;4. Selenium 工作原理5. Selenium 环境搭建 1. 什么是自动化测试&#xff1f; 将人工要做的测试工作进行转换&#xff0c;让代码去执行测试工作 …

【Frida】04_Frida中使用TypeScript脚本(采坑)

▒ 目录 ▒ &#x1f6eb; 导读需求开发环境演示目标 1️⃣ 操作步骤安装node 20.10.0在 VSCode 中打开项目目录初始化一个 NodeJS 项目安装 TypeScript初始化 TypeScript 项目安装依赖配置 TypeScript编写代码编译设置编译脚本运行&#xff0c;查看结果 2️⃣ 采坑frida-compi…

旧华硕电脑开机非常慢 电脑开机黑屏很久才显示品牌logo导致整体开机速度非常的慢怎么办

前提条件 电池需要20&#xff05;&#xff08;就是电池没有报废&#xff09;且电脑接好电源&#xff0c;千万别断电&#xff0c;电脑会变成砖头的 解决办法 更新bios即可解决&#xff0c;去对应品牌官网下载最新的bios版本就行了 网上都是一些更新驱动啊

深度学习 精选笔记(12)卷积神经网络-理论基础1

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

JS原型和原型链的理解

原型链图&#xff0c;图中Parent是构造函数&#xff0c;p1是通过Parent实例化出来的一个对象 前置知识 js中对象和函数的关系&#xff0c;函数其实是对象的一种 函数、构造函数的区别&#xff0c;任何函数都可以作为构造函数&#xff0c;但是并不能将任意函数叫做构造函数&…

【Godot4.2】颜色完全使用手册

概述 本篇简单汇总Godot中的颜色的构造和使用&#xff0c;内容包括了&#xff1a; RGB、RGBA&#xff0c;HSV以及HTML16进制颜色值、颜色常量等形式构造颜色颜色的运算以及取反、插值用类型化数组、紧缩数组或PNG图片形式存储多个颜色 构造颜色 因为颜色是一种视觉元素&…

Vue中使用Lodash

Vue中使用Lodash 前言安装Lodash引用方法vue中使用1、cloneDeep 深拷贝2、uniq 数组去重3、uniqWith 数组对象去重 isEqual 深度比对4、intersection 提取数组相同元素5、chunk 数组切分6、compact去除假值7、reject:根据条件删除指定的值8、find:查找结果的第一个值9、filter:…

VsCode 配置go开发环境之下载go tools

ctrl shift P 选择 go install/update tools&#xff0c;下载go tools 报错&#xff0c; 提升dial err。 将GOPROXY 和 GOSUMDB 按照如下配置&#xff0c;重启IDE即可成功下载 set GOPROXYhttps://goproxy.cn set GOSUMDBoff

(18)C#采集微信群群成员列表信息-微信UI自动化(.Net)

往期知识回顾 (1)C#开启探索微信自动化之路-微信UI自动化 (2)C#创建微信窗体自动化实例-微信UI自动化 (3)C#针对系统热键管理-微信UI自动化 (4)C#采集微信通讯录和联系人-微信UI自动化 (5)C#实现针对微信窗体鼠标静默点击-微信UI自动化 (6)C#搜索微信通讯录联系人-微信UI…

什么是API安全性以及为什么它很重要?

API指的是应用程序接口&#xff08;Application Programming Interface&#xff09;&#xff0c;是一组定义和描述不同软件组件如何通信以及相互操作的规范。它允许不同的软件系统之间共享数据和功能&#xff0c;使它们能够相互连接和交互。 API可以是不同软件之间的通信桥梁&…

进入docker容器中安装软件失败解,国外源慢,时间不同步,执行命令权限不够等问题解决办法

进入docker容器中安装软件失败解&#xff0c;时间不同步, 国外源慢&#xff0c;执行命令权限不够 等问题解决办法 首先我进入docker容器中&#xff0c;为了安装一个软件&#xff0c;引出了很多报错问题&#xff0c;报错如下&#xff1a; 1、无法用 ifconfig 或者 ip addr 的方…

HAProxy高性能负载均衡器

一、HAProxy基础知识 &#xff08;一&#xff09;HAProxy概述 HAProxy是一款基于事件驱动、单进程模型设计的四层与七层负载均衡器&#xff0c;它能够在TCP/UDP层面以及HTTP(S)等应用层协议上实现高效的流量分发。HAProxy不仅适用于Web服务器负载均衡&#xff0c;还能应用于数据…