Elasticsearch初步了解学习记录

news2024/11/23 15:22:03

目录

前言

一、ElasticSearch是什么?

二、使用步骤(python版)

1.引入包

2.连接数据库

3.创建索引

4.写入数据

5.查询数据

三、相关工具介绍

1.ES浏览器插件

总结


前言

随着数据量的不断增加,传统的查询检索在速度上遇到了瓶颈,这个时候就需要一个更具性能的技术来支持大数据量的查询检索,本文就介绍下Elasticsearch。


一、ElasticSearch是什么?

Elasticsearch(ES)是一个基于Apache Lucene构建的开源搜索引擎,它提供了强大的搜索、分析和聚合功能,具有快速、可扩展和易于使用的特点。为了更好地理解ES,以下是一些关键概念:

对于新手来说,有限关注索引、文档的概念即可,以及就是写入、查询。

  1. 索引(Index)

    • 类似于关系数据库中的数据库。它是一个逻辑命名空间,用于存储相关文档。
    • 索引可以包含多个类型(type),尽管在Elasticsearch 7.0之后,一个索引只允许有一个类型。
  2. 类型(Type)(在Elasticsearch 7.0之后已废弃)

    • 在早期版本中,类型类似于关系数据库中的表,用于区分索引中的不同文档类型。
    • 从Elasticsearch 8.0开始,类型的概念已经被移除。
  3. 文档(Document)

    • 存储在Elasticsearch中的JSON对象。
    • 文档由字段组成,每个字段都有其特定的数据类型,如文本、数字或日期。
  4. 字段(Field)

    • 文档中的数据单元,类似于关系数据库中的列。
    • 字段可以是简单的数据类型,也可以是复杂的数据结构,如对象或数组。
  5. 映射(Mapping)

    • 定义索引中每个类型的字段及其数据类型的过程。
    • 映射还定义了如何分析字段值,以便它们可以被有效地索引和搜索。
  6. 节点(Node)

    • Elasticsearch集群中的一个服务器实例。
    • 节点可以有不同角色,如主节点(管理集群状态)、数据节点(存储数据)和协调节点(处理客户端请求)。
  7. 集群(Cluster)

    • 一个或多个节点的集合,它们协同工作,提供索引和搜索功能。
    • 集群提供跨所有节点的联合索引和搜索能力。
  8. 分片(Shard)

    • 索引可以被分割成多个部分,每个部分就是一个分片。
    • 分片可以分布在集群中的不同节点上,这允许水平扩展和性能提升。
  9. 副本(Replica)

    • 分片的副本,用于提供数据的冗余和高可用性。
    • 副本还可以处理搜索请求,提高搜索性能。
  10. 查询DSL(Domain Specific Language)

    • Elasticsearch使用一种基于JSON的查询语言,称为查询DSL,用于执行搜索和其他操作。

这些概念构成了Elasticsearch的核心架构和操作方式。了解这些概念对于有效地使用Elasticsearch至关重要。

二、使用步骤(python版)

1.引入包

from elasticsearch7 import Elasticsearch, helpers

2.连接数据库

# 1. 创建Elasticsearch连接
es = Elasticsearch(
    hosts=["http://127.0.0.1:9200"],  # 服务地址与端口
    http_auth=("user", "password"),  # 用户名,密码
)

3.创建索引

# 2. 定义索引名称
index_name = "test_index_01"

# 3. 如果索引已存在,删除它(仅供演示,实际应用时不需要这步)
if es.indices.exists(index=index_name):
    es.indices.delete(index=index_name)

# 4. 创建索引
es.indices.create(index=index_name)

4.写入数据

# 构建测试数据
docs=[]
docs.append("He is a good boy")
docs.append("I like to eat apple")
docs.append("She is a good girl")
docs.append("My name is John")
docs.append("My team is the best")

# 5. 灌库指令
# to_keywords 进行了分词处理,以便全文检索
actions = [
    {"_index": index_name, "_source": {"keywords": to_keywords(doc), "text": doc}}
    for doc in docs
]

# 6. 文本灌库
helpers.bulk(es, actions)

5.查询数据

# ES 的查询语言
# keywords 是写入数据时候定义的字段,本例也可以按text原始内容查询
search_query = {"match": {"keywords": to_keywords(query_string)}}
res = es.search(index=index_name, query=search_query, size=top_n)
# 取出查询到的记录
return [hit["_source"]["text"] for hit in res["hits"]["hits"]]

三、相关工具介绍

Elasticsearch通常与两个其他开源项目一起被提及,这三个项目合称为“Elastic Stack”,也被称为“ELK Stack”。三剑客这个名称听起来更霸气。这三个项目分别是:

  1. Elasticsearch

    • 强大的搜索引擎,用于快速地存储、搜索和分析大量数据。
    • 它提供实时搜索和数据分析功能。
  2. Logstash

    • 一个数据收集引擎,用于处理、丰富和传输数据。
    • Logstash可以从多个来源(如日志文件、系统日志等)收集数据,然后转换和传输这些数据到Elasticsearch。
  3. Kibana

    • 一个数据可视化工具,用于在Elasticsearch中查看和分析数据。
    • Kibana提供了丰富的可视化功能,如图表、地图和仪表板,可以帮助用户理解复杂的数据模式。

这三个工具共同工作,提供了一个强大的解决方案,用于数据收集、存储、搜索、分析和可视化。由于Elasticsearch、Logstash和Kibana的首字母分别是E、L和K,因此它们通常被称为“ELK Stack”。不过,随着Elastic Stack的发展,现在还包括了其他工具,如Beats(轻量级数据传输工具),因此有时也被称为“Elastic Stack”。

1.ES浏览器插件

这个工具专门介绍下,他可以方便的查看ES的index、具体index的数据、以及查询。这个工具主要是很轻量化,属于edge、Chrome浏览器的一个插件,这里我以edge为例说明使用。

edge浏览器右上角…——扩展——打开Microsoft Edge加载项——左上角搜索框输入“elasticsearch head”,右侧就可以搜索出这个插件

点击安装即可。

下次使用的时候,点击浏览器扩展,再点击es-client即可打开主界面

 然后就是具体使用了,自己操作下就会了,很简单的。


总结

以上就是今天要讲的内容,本文主要介绍了ES的初步使用,包括基本概念、代码连接数据库、创建索引、写数据、查数据等,最后介绍了一些相关的工具。

当然,实践才是更好的学习途径。

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

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

相关文章

Android使用shape属性绘制边框内渐变色

目录 先上效果图实现方法shape属性介绍代码结果 先上效果图 这是使用AndroidStudio绘制的带有渐变色的边框背景色 实现方法 项目中由于UI设计需求,需要给按钮、控件设置带有背景色效果的。以下是UI效果图。 这里我们使用shape属性来绘制背景效果。 shape属性介…

机器学习-09-图像处理02-PIL+numpy+OpenCV实践

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中图像处理技术。 参考 【人工智能】PythonOpenCV图像处理(一篇全) 一文讲解方向梯度直方图(hog) 【杂谈】计算机视觉在人脸图像领域的十几个大的应用方向&…

清远某国企IBM服务器Board故障上门维修

接到一台来自广东清远市清城区某水利大坝国企单位报修一台IBM System x3650 M4服务器无法开机的故障,分享给大家,同时也方便有需要的朋友能及时找到我们快速解决服务器问题。 故障服务器型号:IBM System x3650 M4 服务器使用单位:…

只要0.74元的双通道数字隔离器,1T1R,增强型ESD-3.0 kV ,150Kbps数字隔离器

前言: 做和电源打交道的设备,通信时非常危险,一定要使用隔离的USB-232转换器,或者你设备的串口与市电直连的设备通信时,现在需要使用数字隔离器,早期的一般都使用光耦,在这种情况下,速度不搞的…

正则表达式:量词(三)

正则表达式中的量词有以下几种:1. *: 匹配前面的字符0次或多次。2. : 匹配前面的字符1次或多次。3.?: 匹配前面的字符0次或1次。4. {n}: 匹配前面的字符恰好n次。5. {n,}: 匹配前面的字符至少n次。6. {n,m}:匹配前面的字符至少n次,但不超过m次。 以下是使用Python的…

Unity TextMeshProUGUI 获取文本尺寸·大小

一般使用ContentSizeFitter组件自动变更大小 API 渲染前 Vector2 GetPreferredValues(string text)Vector2 GetPreferredValues(string text, float width, float height)Vector2 GetPreferredValues(float width, float height) 渲染后 Vector2 GetRenderedValues()Vector…

idea 卡怎么办

设置内存大小 清缓存重启 idea显示内存全用情况 右下角

解决CSS中鼠标移入到某个元素其子元素被遮挡的问题

我们在开发中经常遇到一种场景,就是给元素加提示信息,就是鼠标移入到盒子上面时,会出现提示信息这一功能,如果我们给盒子加了hover,当鼠标移入到盒子上时,让他往上移动5px,即transform: transla…

网盘——搜索用户

目录 1、搜索用户 1.1、在friend.h里面定义槽函数 1.2、关联槽函数 1.3、搜索用户的时候,会弹出一个对话框来,在friend.cpp里面引入下面的头文件,专门用来输入数据的 1.4、获取输入信息,并使用Qstring来接收它 1.5、将上述代码打包&…

AR地图导览小程序是怎么开发出来的?

在移动互联网时代,AR技术的发展为地图导览提供了全新的可能性。AR地图导览小程序结合了虚拟现实技术和地图导航功能,为用户提供了更加沉浸式、直观的导览体验。本文将从专业性和思考深度两个方面,探讨AR地图导览小程序的开发方案。 编辑搜图 …

时间复杂度详解2——时间复杂度的计算

时间复杂度基本计算规则: 基本操作即只有常数项,认为其时间复杂度为O(1)顺序结构,时间复杂度按加法进行计算循环结构,时间复杂度按乘法进行计算分支结构,时间复杂度取最大值判断一个算法效率时,往往只需要…

HubSpot如何通过自动化和优化客户服务流程?

在当今竞争激烈的市场环境中,提供卓越的客户服务体验已经成为企业赢得客户忠诚、推动业务增长的关键所在。HubSpot,作为一款领先的客户关系管理软件,通过自动化和优化客户服务流程,为企业带来了革命性的服务体验提升。 HubSpot通…

对LSTM的通俗易懂理解--可变权重

RNN的问题:长期依赖,即对短期的数据敏感,对比较远的长期数据不敏感,这是因为RNN隐藏状态权重在不同时刻是共享相同的,随着时间步的增加,梯度会指数级地衰减或者增长,导致梯度消失或者爆炸&#…

稀碎从零算法笔记Day47-LeetCode:找到冠军 I

或许是昨天的每日一题太难了,今天的简单 题型:数组、矩阵 链接:2923. 找到冠军 I - 力扣(LeetCode) 来源:LeetCode 题目描述 一场比赛中共有 n 支队伍,按从 0 到 n - 1 编号。 给你一个下…

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第三套

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第三套 (共9套,有答案和解析,答案非官方,未仔细校正,仅供参考) 部分题目分享,完整版获取(WX:didadidadidida313,加我备注&#x…

大数据架构之关系型数据仓库——解读大数据架构(二)

文章目录 前言什么是关系型数仓对数仓的错误认识与使用自上而下的方法关系型数仓的优点关系型数仓的缺点数据加载加载数据的频率如何确定变更数据 关系型数仓会消失吗总结 前言 本文对关系型数据仓库(RDW)进行了简要的介绍说明,包括什么是关…

《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.5 年末操作:维护新财政年度会计凭证编号范围

2.6.5 年末操作:维护新财政年度会计凭证编号范围 财务系统的维护者要在每年年末预先设置好下一年度的会计凭证编号范围(number range),以便下一年度会计凭证能够顺利生成。这一操作一定要在下一年度1月1日以前预先完成。 …

C#/.NET/.NET Core拾遗补漏合集(24年4月更新)

前言 在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。 GitHub开源地…

【MoS2】应变增强的单层MoS2光电探测器

这篇文章的标题是《Strain-Enhanced Large-Area Monolayer MoS2 Photodetectors》,作者是Borna Radatovic等人,发表在《ACS Applied Materials & Interfaces》期刊的2024年第16卷。文章主要研究了应变增强的大面积单层MoS2光电探测器的性能和应用潜力…

基于SpringBoot的“汉服文化平台网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“汉服文化平台网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统功能界面图 用户登录、用…