目录
前言
一、ElasticSearch是什么?
二、使用步骤(python版)
1.引入包
2.连接数据库
3.创建索引
4.写入数据
5.查询数据
三、相关工具介绍
1.ES浏览器插件
总结
前言
随着数据量的不断增加,传统的查询检索在速度上遇到了瓶颈,这个时候就需要一个更具性能的技术来支持大数据量的查询检索,本文就介绍下Elasticsearch。
一、ElasticSearch是什么?
Elasticsearch(ES)是一个基于Apache Lucene构建的开源搜索引擎,它提供了强大的搜索、分析和聚合功能,具有快速、可扩展和易于使用的特点。为了更好地理解ES,以下是一些关键概念:
对于新手来说,有限关注索引、文档的概念即可,以及就是写入、查询。
-
索引(Index):
- 类似于关系数据库中的数据库。它是一个逻辑命名空间,用于存储相关文档。
- 索引可以包含多个类型(type),尽管在Elasticsearch 7.0之后,一个索引只允许有一个类型。
-
类型(Type)(在Elasticsearch 7.0之后已废弃):
- 在早期版本中,类型类似于关系数据库中的表,用于区分索引中的不同文档类型。
- 从Elasticsearch 8.0开始,类型的概念已经被移除。
-
文档(Document):
- 存储在Elasticsearch中的JSON对象。
- 文档由字段组成,每个字段都有其特定的数据类型,如文本、数字或日期。
-
字段(Field):
- 文档中的数据单元,类似于关系数据库中的列。
- 字段可以是简单的数据类型,也可以是复杂的数据结构,如对象或数组。
-
映射(Mapping):
- 定义索引中每个类型的字段及其数据类型的过程。
- 映射还定义了如何分析字段值,以便它们可以被有效地索引和搜索。
-
节点(Node):
- Elasticsearch集群中的一个服务器实例。
- 节点可以有不同角色,如主节点(管理集群状态)、数据节点(存储数据)和协调节点(处理客户端请求)。
-
集群(Cluster):
- 一个或多个节点的集合,它们协同工作,提供索引和搜索功能。
- 集群提供跨所有节点的联合索引和搜索能力。
-
分片(Shard):
- 索引可以被分割成多个部分,每个部分就是一个分片。
- 分片可以分布在集群中的不同节点上,这允许水平扩展和性能提升。
-
副本(Replica):
- 分片的副本,用于提供数据的冗余和高可用性。
- 副本还可以处理搜索请求,提高搜索性能。
-
查询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”。三剑客这个名称听起来更霸气。这三个项目分别是:
-
Elasticsearch:
- 强大的搜索引擎,用于快速地存储、搜索和分析大量数据。
- 它提供实时搜索和数据分析功能。
-
Logstash:
- 一个数据收集引擎,用于处理、丰富和传输数据。
- Logstash可以从多个来源(如日志文件、系统日志等)收集数据,然后转换和传输这些数据到Elasticsearch。
-
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的初步使用,包括基本概念、代码连接数据库、创建索引、写数据、查数据等,最后介绍了一些相关的工具。
当然,实践才是更好的学习途径。