Elasticsearch初步了解学习记录

news/2024/5/17 3:43:59

目录

前言

一、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.mrgr.cn/p/35311636

相关文章

AskManyAI:一个GPT、Claude、Gemini、Kimi等顶级AI的决斗场

一直以来很多人问我能不能有个稳定,不折腾的全球AI大模型测试网站,既能够保证真实靠谱,又能够保证稳定、快速,不要老动不动就挂了、出错或者漫长的响应。 直到笔者遇到了AskManyAI,直接就惊艳住了! 话不多…

vscode 代码格式化设置

1.设置默认格式化工具 ctrl+shift+P,筛选“Format Document”,设置Prettier为默认、 2.设置保存自动格式化打开 VSCode,并打开你想要格式化的代码文件。 在菜单栏中,选择“文件”>“首选项”>“设置”(快捷键 Ctrl+,)。 在搜索框中输入“format on save”,然后点…

分享2024 golang学习路线

写在前面 Go语言(也称为Golang)是Google开发的一种静态强类型、编译型语言,它具有简洁、快速、安全、并发等特点,尤其适合构建大型软件、微服务架构和云平台服务。Go的学习曲线相对平缓,社区活跃,是现代编…

2-81. 创建交易窗口 UI 并实现拖拽交易打开交易窗口

关闭窗口 修改 EventHandler修改 InventoryUI修改 NPCFunction打开窗口人物无法移动 修改 Enums修改 EventHandler修改 NPCFunction修改 Player打开对话框人物还可以移动 修改 DialogController打开商店的时候同时打开背包 调整背包和商店锚点位置修改 InventoryUI拖拽物品实现…

linux的raid

raid 独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。利用虚拟化存储技术把多个硬盘组合起来,成为一个或多个硬盘阵列组,目的为提升性能或数据冗余,或是两者同时提升。 简…

springCloudAlibaba集成sentinel实战(超详细)

一、Sentinel介绍 1. 什么是Sentinel Sentinel是阿里开源的项目,提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 分布式系统的流量防卫兵: 随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以“流…

修改 git log 显示的时间格式

修改 git log 显示的日期时间格式 目录修改 git log 显示的日期时间格式1、发现问题2、分析问题3、解决问题参考 1、发现问题 输入 git log 查看 Git commit(提交)信息时,日期时间格式不是 “年-月-日 时:分:秒”❓ .2、分析问题 .使用 vim 编辑 git 的全局配置文件:git co…

OpenHarmony轻量系统开发【6】驱动之ADC按键

摘要:本文简单介绍如何操作ADC去读取电压,并且实现开发板上3个ADC按键检测的功能 适合群体:适用于润和Hi3861开发板,L0轻量系统驱动开发 文中所有代码仓库:https://gitee.com/qidiyun/hihope-3861-smart-home-kit 6…

Pycharm——安装mypy(静态分析器)

pycharm安装mypy mypy是一个静态分析器,为在程序运行前进行代码分析,解决数据类型不一致或数据类型错误的问题。安装插件添加mypy程序:找到自己的目录C:\Users\xuanyongjun\AppData\Roaming\Python\Python312\Scripts\mypy.exe 实参:$FilePath$ 工作目录:$FileDir$使用myp…

CBD

CBD(Central Business District,中央商务区),具体指一个国家或大城市里主要商业活动的聚集区。 美加等地也称商业中心区为“Downtown”(城市商业区),因为过去的住宅区都在山上,而商店街都在山下。而日本和韩国称中心商务区为“都心”或“繁华街”。 CBD概念最早产生于1…

​面试经典150题——LRU 缓存

​ 1. 题目描述 2. 题目分析与解析 首先讲解一下LRU LRU 是“Least Recently Used”的缩写,LRU 算法的基本思想是跟踪最近最少使用的数据,并在缓存已满且需要存储新数据时优先驱逐该数据。 LRU 算法通常的工作原理的简化解释: 当访问或使…

初等双射构造

组合意义好难My Blogs P0对于正整数 \(n\),称 \(a_{1\dots k}\) 是 \(n\) 的有序划分,当且仅当 \(\sum_i a_i=n\)。给定 \(n(\geq 2)\),求满足 \(\sum_{i}[2|a_i]\) 是偶数的有序划分个数。答案:\(2^{n-2}\)。 \(n\) 的所有划分可以看成有 \(n-1\) 个空位,每个空位可以放板…

Go 编译构建的一些细节

Go 编译构建的一些细节 发现自己竟然没有怎么认真研究过 go 的编译构建命令。 结论前置 go run 专门用来运行命令源码文件的命令,一般用来运行单个文件go build 主要是用于测试编译。编译某个包或者项目,在当前目录下生成可执行文件go install 编译并…

【无人机/平衡车/机器人】详解STM32+MPU6050姿态解算—卡尔曼滤波+四元数法+互补滤波(文末附3个算法源码)

效果: MPU6050姿态解算-卡尔曼滤波+四元数+互补滤波 目录 基础知识详解 欧拉角

2024年环境科学,资源与材料化学国际会议(ICESRMC2024)

2024年环境科学,资源与材料化学国际会议(ICESRMC2024) 会议简介 2024年国际环境科学、资源与材料化学会议(ICESRMC2024)将在中国三亚举行。ICESRMC2024会议主要关注环境科学、资源和材料化学,旨在为环境科学、能源和材料化学领域…

配置nginx访问出现403问题Permission denied

1.配置文件内用户与启动nginx的文件的目录不同(未配置用户)2。nginx的启动user要有操作数据目录的权限本帖子也是纯手工制作,转载请标明出处-----------burukku(づ。◕ᴗᴗ◕。)づ

XILINX 7系列时钟资源

文章目录 前言一、时钟概要1.1、CC1.2、BUFR、BUFIO、BUFMR1.3、CMT1.4、BUFH1.5、BUFG 二、时钟路由资源三、CMT 前言 本文主要参考xilinx手册ug472 一、时钟概要 7系列FPGA时钟资源主要有CC、BUFR、BUFIO、BUFMR、CMT、BUFG、BUFH和GTE_COMMON 1.1、CC “CC”&#xff0…

遇到这3种接口测试问题,其实,你可以这么办~

作为整个软件项目的必经环节,软件测试是不可缺少的“查漏补缺”环节。而作为软件测试中的重要一环——接口测试,几乎串联了整个项目所有的输入和输出环节。 前几年,我在做后端测试时,接触最多的正是接口测试。基于此,我…

Rust gRPC 开发 todo-demo

在這篇文章中,我們將使用 gRPC 創建一個基本的 Todo 應用程序。首先,我們將非常快速的概述一下 gRPC 和 Protocol Buffers。 什麼是 gRPC? gRPC 是一個現代的開源的高性能遠程過程調用 (RPC) 框架,可以在任何環境下運行。RPC 代表遠程過程調用(Remote Procedure Call),開頭…

HoloLens2开发时,VS2022的组件和模块配置

HoloLens2开发的时候,VS2022的安装和配置清单(有的模块可能不是必须的模块) 一、大的模块配置 二、各模块组件的配置