es(1)(仅供自己参考)

elasticsearch(ES)是一款非常强大的开源搜索引擎,可以帮助我们从海量的数据中快速找到需要的内容。

elastic stack(ELK):elasticsearch结合kibana、Logstash、Beats。被广泛的应用在日志数据分析、实时监控等领域。

Kibana:数据的可视化都可以被取代,每个大公司都有自己的网站可视化工具。

Logstash 和Beats:负责将数据投喂给ElasticSearch来存储,计算和搜索

那么这些工具当中最不能被替代的当然后Elasticsearch了。几乎所有的分布式搜索都用着ES。数据的分析都必须走ES,ES不能被替代

ES是基于Lucene开发的

二 、正排索引和倒排索引

正排索引

正排索引是指将数据按其自然顺序存储,并为每个数据项维护一个指向该数据项位置的指针。它通常用于以下场景:

  • 应用场景

    • 数据库管理系统(如关系型数据库)
    • 需要快速访问完整记录的场景
  • 优点

    • 查询速度快,尤其是对范围查询(例如查找某个字段值在某个范围内的记录)非常有效。
    • 数据插入和更新操作相对简单。
  • 缺点

    • 对于全文搜索和复杂查询,性能较差,因为需要遍历整个数据集。

倒排索引

倒排索引是一种将文档中的词汇与包含这些词汇的文档的列表进行映射的数据结构。它特别适用于文本搜索和信息检索。

  • 应用场景

    • 搜索引擎
    • 文本检索系统
    • 需要快速查找包含特定关键词的文档的场景
  • 优点

    • 可以快速找到包含特定词汇的所有文档,支持高效的关键词搜索。
    • 适合处理大量文本数据,支持复杂查询(如布尔查询)。
  • 缺点

    • 需要额外的存储空间来维护索引。
    • 更新和删除操作相对复杂,因为需要维护索引的准确性。

总结

  • 正排索引适合需要快速访问完整记录的情况,优于范围查询。
  • 倒排索引则适合文本检索,能够高效支持关键词搜索

自己的理解

正排索引:通过检索全部数据(例如mysql的每行,有很多行数据)将每一行的数据与关键字比对,如果匹配则添加到返回序列当中。

倒排索引:

两个字段:词条和文档id()

词条:包含一个文档中的一些关键字(文档按照语义分成的词语)

文档id:包含这个关键字的文档(一行数据)

当查询一个关键字,不是与整个数据集进行一一比对,而是与词条进行比较,并且词条是唯一的,可以将词条建索引,这样关键字与词条进行比对会很快。

三、认识ES

文档:可以是数据库中的一条商品数据,一个订单信息

文档数据会被序列化为json格式存储到elasticsearch当中

索引:相同类型的文档的集合(例如商品是一类集合,订单是一类集合)

映射:索引中文档字段的约束信息,类似表的数据约束

mysql和ES概念的对比

ES和mysql的架构

mysql:擅长事务类型操作,可以确保数据的安全和一致性

ES:擅长海量数据的搜索、分析、计算

如何选择

  • 使用 MySQL

    • 当数据需要严格一致性,并且需要复杂的关系查询时。
    • 适合传统的业务系统。
    • 保存安全可靠的数据
  • 使用 Redis

    • 当需要高速缓存、实时数据处理或简单的键值存储时。
    • 适合高并发场景和需要低延迟的应用。
  • 使用 Elasticsearch

    • 当需要强大的搜索性能和复杂查询能力时,尤其是对文本数据。
    • 适合需要处理和分析大规模日志数据的应用

5、分词器:

ik分词器有两种分词方式:

  • ik_smart:最少切分  : 占用内存少,但是查找某些词找不到这句话

  • ik_max_word:最细切分 :占用内存多,很多词都可以找到这句话,粒度更细

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "黑马程序员学习java太棒了"
}

GET /_analyze
{
  "analyzer": "ik_smart",
  "text": "黑马程序员学习java太棒了"
}

分词器的作用:

1、创建倒排索引时对文档分词

2、用户搜索时,对输入的内容分词

IK分词器模式:

1、ik_smart:智能切分,粗粒度

2、ik_max_word:最细切分,细粒度

IK分词器如何拓展词条,如何停用:

1、利用config目录的IkAnalyzer.cfg.xml文件添加拓展词典和停用词典

2、在词典中添加拓展词条或者停用词条

6、Mapping(类型,每个数据是什么类型)是对索引库中文档的约束,Mapping常见属性:

1、type:字段的数据类型,常见的简单类型有:

    + 字符串:text(可分词的文本)、keyword(精确值,不需要分词)

   + 数值:long、integer、short、byte、double、float

  + 布尔:boolean

   + 日期:Date

   + 对象:object

2、index:是否创建倒排索引(创建索引是为了查找,有些词不需要查找),默认为true

3、analyzer:使用那种分词器(和text类型配合使用)

4、properties:该字段的子字段

GET _search
{"query": {"match_all": {}}
}GET /# 分析值,默认的分词器standard
POST /_analyze
{"text": "cc,是个好学生","analyzer": "standard"
}# 分词,IK分词器的最细粒度
GET /_analyze
{"analyzer": "ik_max_word","text": "黑马程序员学习java太棒了"
}#分词,IK分词器粗粒度
GET /_analyze
{"analyzer": "ik_smart","text": "黑马程序员学习java太棒了"
}#通过新增词语来进行分词
GET /_analyze
{"analyzer": "ik_smart","text": "传智教育的java太棒了"
}#创建一个索引库,类似于表
PUT /cc
{"mappings":{"properties": {"info":{"type": "text","analyzer": "ik_smart"},"email":{"type": "keyword","index": false},"name":{"type": "object", "properties": {"firstName":{"type":"keyword"},"lastName":{"type":"keyword"}}}}}
}#查询索引库
GET /cc#往索引库中新增一个字段
PUT /cc/_mapping
{"properties":{"age":{"type":"integer","index":false}}
}#删除一个索引库,慎重操作
DELETE /cc#往索引库中添加文档(一行数据),‘1’为索引id,不添加会有一个默认值
POST /cc/_doc/1
{"info":"cc,你真的很菜啊","email":"3363702067@qq.com","name":{"firstName":"rong","lastName":"li"}
}#查询某个索引库中的某个id的值
GET /cc/_doc/1#删除索引库中的某个id值
DELETE /cc/_doc/1#全量修改,将所以字段都修改也是一直覆盖,如果存在则是修改,不存在则是新增
PUT /cc/_doc/1
{"info":"cc,你真的很lajia啊","email":"3363702067@qq.com","name":{"firstName":"rong","lastName":"li"}
}#局部修改,只更新某个字段的值
POST /cc/_update/1
{"doc": {"email":"cc"}
}

ES的文档操作:

ES依赖:

       <!--es--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId></dependency>

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

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

相关文章

信创认证(信创人才考评证书)的含金量?到底有多少?

“信创认证”是什么&#xff1f; 信创认证是由工业和信息化部教育与考试中心推出的国家级权威认证&#xff0c;旨在推动信息技术应用创新产业的发展&#xff0c;并构建完善的信创产业人才培养体系。该认证在个人信息技术领域具有极高的认可度。 信创认证分为初级、中级和高级三…

新手铲屎官提问,有哪几款噪音低的宠物空气净化器推荐

相信很多铲屎官都明白的的痛就是猫咪掉毛太严重&#xff0c;所以每次看到满天飞的浮毛时只想赶紧逃离&#xff0c;一点都不想清理。但是家是自己的&#xff0c;猫是自己的&#xff0c;健康也是自己的&#xff0c;不清理也得清理。 为了更有效的清理浮毛&#xff0c;我朋友特意…

参会记录|2024 中国计算机大会(CNCC 2024)

前言&#xff1a;2024年10月24-26日&#xff0c;有幸在横店参加了2024年度的中国计算机大会&#xff08;CNCC&#xff09;&#xff0c;本篇博客总结本人在会议期间收听的主要报告内容及收获。 2024.10.24 上午 夏苑海岳开襟 如何实现人工智能在现实场景中的落地&#xff1f; …

OgCloud参加HPE Discover More AI 2024,共建数智化未来!

10月16日&#xff0c;企业科技盛会HPE Discover More AI 2024在香港瑰丽酒店举行。本次大会Hewlett Packard Enterprise (HPE) 联同全球14个科技合作伙伴&#xff0c;聚焦于AI未来走势、混合云创新与边缘安全等领域&#xff0c;以主题演讲、技术展示、研讨会等形式进行&#xf…

从双斜率,野人除法看性能优化

人呐&#xff0c;天生对线性的推崇&#xff0c;却在内心又对线性的不爱。一开始人们总是从最简单的线性过程入手&#xff0c;但最终都难免因为不满足而进入指数过程。 看一个 Linux kernel 老式 O(1) 调度器的时间片计算函数的演化&#xff1a; 早期的 O(1) 是一个连续线性函…

vue 解决:npm ERR! code ERESOLVE 及 npm ERR! ERESOLVE could not resolve 的方案

1、问题描述&#xff1a; 其一、需求为&#xff1a; 想要安装项目所需依赖&#xff0c;成功运行 vue 项目&#xff0c;想要在浏览器中能成功访问项目地址 其二、问题描述为&#xff1a; 在 package.json 文件打开终端平台&#xff0c;通过执行 npm install 命令&#xff0c…

【MySQL】视图特性 用户管理

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是视图&#xff0c;我们又该如何管理用户。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! >…

kafka 如何减少数据丢失?

大家好&#xff0c;我是锋哥。今天分享关于【kafka 如何减少数据丢失?】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka 如何减少数据丢失? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Apache Kafka 是一个高吞吐量的分布式消息队列&#xff0c;广泛用…

前端对一个增删改查的思考

1、来源&#xff1a;dify dify/web/app/components/workflow/nodes/question-classifier/components/class-list.tsx at main langgenius/dify GitHub 2、代码流程&#xff1a; 3、思索问题&#xff1a; 1、为啥要用return形式&#xff0c;而不是value直接当函数&#xff1…

SQL进阶技巧:如何求组内排除当前行的移动平均值?

目录 0 需求描述 2 数据准备 3 问题分析 4 小结 0 需求描述 -- 按照 日期,省份,等级 分组 求分数的平均值;但是需要剔除当前行的数据 2 数据准备 create table avgtest as (select 2024-10-24 as cdate, 广东 as province,深圳 as city, 2 as level, 200 as scoreunio…

ssm005基于SSM框架的购物商城系统的开发与实现(论文+源码)_kaic

设计题目&#xff1a;购物商城系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对…

【MyBatis】| JavaWeb基础教程学习笔记(上)

01-MyBatis简介 什么是MyBatis? MyBatis是一款优秀的持久层框架&#xff0c;用于简化JDBC开发MyBatis本是Apache的一个开源项目iBatis&#xff0c;2010年这个项目由apache software foundation迁移到了google code&#xff0c;并且改名为MyBatis。2013年11月迁移到Github官网…

双11必买物品清单有哪些?双11推荐购买清单推荐分享

随着一年一度的“双十一”购物狂欢节的到来&#xff0c;各大电商平台纷纷推出了各种优惠活动和促销策略&#xff0c;让消费者在享受购物乐趣的同时也能获得实实在在的优惠。然而&#xff0c;面对琳琅满目的商品和纷繁复杂的促销活动&#xff0c;双11必买物品清单有哪些成为了一…

【AIGC】从CoT到BoT:AGI推理能力提升24%的技术变革如何驱动ChatGPT未来发展

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;迈向AGI的新跨越&#x1f4af;BoT与CoT的技术对比技术原理差异推理性能提升应用范围和通用性从错误中学习的能力总结 &#x1f4af;BoT的工作流程和机制初始化过程生成推…

网上摄影工作室:Spring Boot框架的应用实例

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

Redis——缓存

目录 前言 一、缓存基本概念 1.概念 2.二八定律 二、使用 Redis 作为缓存 三、缓存的更新策略 1.定期生成 2.实时生成 四、Redis 内存淘汰机制 1.通用淘汰策略 &#xff08;1&#xff09;FIFO &#xff08;2&#xff09;LRU &#xff08;3&#xff09;LFU &#…

buildroot制作自己的软件包(可以理解为应用程序)

以helloworld为例记录使用步骤 一&#xff1a;书写自己的源程序以及Makefile helloworld.c #include <stdio.h>int main(int argc, char **argv) {printf("hello world\r\n");return 0; }Makefile all: helloworldhelloworld: helloworld.o$(CC) -o hellow…

模型训练识别手写数字(二)

模型训练识别手写数字&#xff08;一&#xff09;使用手写数字图像进行模型测试 一、生成手写数字图像 1. 导入所需库 import cv2 import numpy as np import oscv2用于计算机视觉操作。 numpy用于处理数组和图像数据。 os用于文件和目录操作。 2. 初始化画布 canvas np.z…

Kaggle竞赛——灾难推文分类(Disaster Tweets)

目录 1. 准备工作2. 资源导入3. 数据处理4. 绘制词云图5. 数据可视化5.1 词数和字符数可视化5.2 元特征可视化5.3 类别可视化 6. 词元分析6.1 一元语法统计6.2 多元语法统计 7. 命名实体识别8. 推文主题提取9. 构建模型9.1 数据划分与封装9.2 模型训练与验证 10. 模型评估11. 测…

SQL:Windows下MySQL的安装教程(超详细)

一.系统环境&#xff1a; 操作系统&#xff1a; Windows11&#xff1b; MySQL版本&#xff1a; mysql-community-8.0.40.0&#xff1b; 二.MySQL下载&#xff1a; 访问MySQL 官网下载地址&#xff1a;https://www.mysql.com/&#xff0c;点击DOWNLOADS&#xff1b; 跳转后页…