Elasticsearch初步了解学习记录

目录

前言

一、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.mzph.cn/news/812714.shtml

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

相关文章

IO——文件IO

1.1 概念 又称为系统IO,是系统调用,是操作系统提供的函数接口。 posix中定义的一组用于输入输出的函数。 1.2 特点 (1)没有缓冲机制,效率较低 (2)围绕文件标识符操作,非负整数,依次分配 (3) 文件IO默认打开了三个文…

正则表达式:量词(三)

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

计算机网络 子网掩码与划分子网

一、实验要求与内容 1、需拓扑图和两个主机的IP配置截图。 2、设置网络A内的主机IP地址为“192.168.班内学号.2”,子网掩码为“255.255.255.128”,网关为“192.168.班内学号.1”;设置网络B内的主机IP地址为“192.168.班内学号100.2”&#…

@AutoConfigurationPackage 和 @ComponentScan 有何区别?

首先,从名字上看,这两个注解意义特别接近,AutoConfigurationPackage 就是自动配置包,自动配置包的目的是能让系统扫描到包内的 Bean;ComponentScan 则是组件扫描,这个松哥在之前的教程中也多次提到过了&…

VBA 实现outlook 当邮件设置category: red 即触发自动创建jira issue

1. 打开: Outlook VBA(Visual Basic for Applications) 方法一: 在邮件直接搜索:Visual Basic editor 方法二: File -> Options -> Customize Ribbon-> 打钩 如下图: 2.设置运行VBA 脚本: File -> Options -> Trust center -> Trus…

Day37|贪心算法part06:738.单调递增的数字、968. 监控二叉树、贪心总结

738. 单调递增的数字 总体思想就是从后往前遍历,比较第i位和第i1位的大小,不符合顺序char[i]减1,i1位填9,找到需要填9的最先位置,然后填9。 class Solution {public int monotoneIncreasingDigits(int n) {String s …

win 安装 Stable Diffusion

注:本人使用的是 RTX2060 - 6G版 特别提醒:安装一定要 CUDA 和 PyTorch 版本能配套用,不然会有生成保存问题(我是这样的),装完用 python -m xformers.info 这个看对应的版本 建议:有些命令安装在venv 虚拟机中做&…

【Go实现】实践GoF的23种设计模式:桥接模式

上一篇:【Go实现】实践GoF的23种设计模式:解释器模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Pattern–Go-Implementation 简介 GoF 对桥接模式(Bridge Patt…

Android13 CameraServer启动流程

代码入口 frameworks/av/camera/cameraserver 里面包含了四个文件 我们先来看看Android.bp的内容 package {// See: http://go/android-license-faq// A large-scale-change added default_applicable_licenses to import// all of the license_kinds from "frameworks_a…

Flutter第七弹 网格列表GridView

1) Flutter提供了网格列表,怎么设置列数? 2)怎么初始化每个列表项Item? 一、GridView简介 Flutter也存在网格列表组建GridView,用于展示多行多列的列表。 1.1 GridView构建 采用GridView.count() 进行构建 1.2 Gr…

服务器代理

服务器代理 配置:64G内存1 3090(24g)1P4000(8g) SSH连接 工作路径:/home/ubuntu/workspace/python Anaconda路径:/home/Ubuntu 1.在工作路径下创建自己的文件夹作为workspace 2.以用户ubunbtu登…

数据采集仪:自动化监测系统的核心组件

在当代的工业自动化领域,数据采集仪成为了一个关键的技术工具,它不仅仅是简单地将电信号转化为数据信号,而是能够实时、有效地处理和显示各种信号,确保整个监测系统的稳定、高效运行。 点击输入图片描述(最多30字&…

【微信小程序】canvas开发笔记

【微信小程序】canvasToTempFilePath:fail fail canvas is empty 看说明书 最好是先看一下官方文档点此前往 如果是canvas 2d 写canvas: this.canvas,,如果是旧版写canvasId: ***, 解决问题 修改对应的代码,如下所示,然后再试试运行&#x…

春招百题--堆--扩展篇--找出最小

其他类似题目: 373. 查找和最小的 K 对数字378. 有序矩阵中第 K 小的元素719. 找出第 K 小的数对距离786. 第 K 个最小的素数分数 2040. 两个有序数组的第 K 小乘积 2386. 找出数组的第 K 大和 215. 数组中的第K个最大元素 不纠结直接sort排序解决。 class Solut…

[大模型]Yi-6B-Chat 接入 LangChain 搭建知识库助手

Yi-6B-Chat 接入 LangChain 搭建知识库助手 环境准备 在 autodl 平台中租赁一个 3090 等 24G 显存的显卡机器,如下图所示镜像选择 PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的 JupyterLab,并且打开其中的终端开始…

制作framework

参考学习地址 https://www.jianshu.com/p/a15ad98bc965 注意事项: 1、在自动生成的.h文件中引入头文件时,需要完整路径 2、编译成功后如何查看位置 实际位置在: /Users/apple/Library/Developer/Xcode/DerivedData/项目名称-xaskhaskhkas/…

Zookeeper集群部署

目录 1.环境部署 1.1实验环境 1.2安装前环境 2.安装Zookeeper 2.1修改Zookeeper配置配置文件 2.2 设置myid号以及启动脚本 2.3 设置脚本 2.4 加权并加入系统管理 2.5 分别启动三台机器(192.168.247.21) 2.6 查看三台主机状态信息 1.环境部署 1…

[java]24:集合

集合: 1)可以动态保存任意多个对象,使用比较方便! 2)提供了一系列方便的操作对象的方法:add、remove、set、get等3)使用集合添加,删除新元素的示意代码-简洁了 集合的框架体系: Java…

Kyligence 发布企业级 AI 解决方案,Data + AI 落地迈向新阶段

4月11日,Kyligence 2024 数智论坛暨春季发布会成功召开。Kyligence 正式发布全新的企业级 AI 解决方案,基于服务金融、零售、制造、医药等行业领先客户的落地实践,Kyligence 为企业提供准确、可靠、智能的 AI 指标平台一站式解决方案&#x…

影响小程序SSL证书收费标准的因素有哪些?

在当今互联网时代,移动应用发展日新月异,小程序逐渐成为广大企业和个人开发者的心仪之选。然而,伴随小程序的广泛应用,安全问题和用户信任显得尤为关键。为了确保小程序的信息传输安全,SSL证书成为了一项基础配置。那么…