【最新 v7.9】Elasticsearch的基本概念与配置

本文介绍了Elasticsearch的基本概念,包括其分布式特性、主要术语如集群、分片、映射等。同时,阐述了Elastic Stack中的Kibana和Logstash的作用。在安装与基本操作部分,详细讲解了如何在Linux环境下安装ES,以及使用cURL进行RESTful API交互,包括插入、获取和搜索文件的操作。
摘要由CSDN通过智能技术生成

课程的大作业要求搭建数据中台,并用到ES技术。因此,我学习了一下它的基本概念和指令,把我的笔记分享给大家。

参考自:

  1. 官方教程 《Getting started with ElasticSearch》
  2. Youtobe 视频教程 Elasticsearch Tutorial for Beginners

更新日志:

  1. (+) 1.1 中 Dynamic Mapping 的说明。2020-12-23

Elasticsearch(简称ES) 是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件

一、Elasticsearch的基本概念

1. 特点

Elasticsearch 是一个分布式的存储文件的仓库,它区别于传统的按行存储数据的方式,而是将复杂的数据序列化为 JSON 格式进行存储。而且每个结点都可以 几乎实时地 访问到所有的文件。比 Hadoop, spark, flink 都要快得多

它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。使用这种检索方式的软件或者产品称之为 全文搜索引擎。常用于聚合 (aggregate) 日志

2. 术语

主要涉及到了分布式处理中的术语

  • cluster (集群)

    是指一组松散连接的计算机执行相同的任务,并由软件进行统一控制域调度。其中,每个用作服务器的计算机都运行自己的操作系统实例,被称为节点。在大多数情况下,所有节点都使用相同的硬件

还有这一技术包含的基本概念

  • field

    字段,数据对象的属性

  • document

    文件 (document) 就是你要查找的东西,可以是字符串,一般是 JSON 格式。每个文件都有一个唯一的 ID 以及一个 type。例如日志类型,百科全书类型

  • type

    每个 type 定义了部分 documents 共有的语义和映射规则,来代表同一种文件

  • index

    它是被搜索的实体 (entity),是 type 的集合(从而也有了 type 是属于该集合的所有文件)。由此,ES 才能对类型在该集合中的文件进行搜索。

    类比到传统的数据库中,index 就是一个数据库,type 是一张表,document 就是一行数据

  • inverted index

    其实 index 就是 inverted index。现在来看一下它是怎么生成的

    假定有两个文件:

文件示例

前面提到了,文件可以是字符串的形式,现在需要把它们存储到 ES 中。

主要思想是对其进行分词并预处理,得到的每个 token 作为 key,文件信息作为 value 存储至 ES 中。这里,简单的提取出每个单词,并规范化(例如规范时态,缩写)得到的结果如下所示

得到的Index

  • dynamic mapping (动态映射 )

    ES 的 mapping 非常类似于静态语言中的数据类型:声明一个变量为 int 类型的变量, 以后这个变量都只能存储 int 类型的数据。同样的, 一个 number 类型的 mapping 字段只能存储 number 类型的数据。

    同语言的数据类型相比,mapping 还有一些其他的含义,mapping 不仅告诉 ES 一个 field 中是什么类型的值, 它还告诉 ES 如何索引数据以及数据是否能被搜索到。ES 中的 Mapping 还有以下几个特点:

    • Mapping 可以动态识别

      ES 会根据数据格式自动识别索引中字段的类型,如无特殊需求,则不需要手动创建 Mapping

    • 当需要对某些字段添加特殊属性时,就需要手动设置 Mapping(如是否分词、是否存储、定义使用其他分词器)

    • 一个索引的Mapping一旦创建,若已经存储了数据,就不可以修改

  • shard (分片)

    当索引的数据量太多时,受限于单个节点的内存、磁盘处理能力等,节点无法足够快速地响应客户端的请求,此时需要将一个索引上的数据进行水平拆分。拆分出来的每个数据部分称之为 shard (分片)。并且一般情况下,每个分片都会放到不同的服务器上。

Shard的基本概念

3. Elastic Stack

1)Kibana

Kibana 是一款适用于 Elasticsearch 的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和地图。Kibana 同时还包括诸如 Canvas 和 Elastic Maps 等高级应用程序;Canvas 允许用户基于自身数据创建定制的动态信息图表,而 Elastic Maps 则可用来对地理空间数据进行可视化。

Kibana的运行截图
经常用于:

  • 日志分析;
  • 基础设施指标和容器监测;
  • 地理空间数据分析和可视化
2)Logstash

可用来对数据进行聚合和处理,并将数据发送到 Elasticsearch。Logstash 是一个开源的服务器端数据处理管道,允许您在将数据索引到 Elasticsearch 之前同时从多个来源采集数据,并对数据进行充实和转换。

4. 使用方式

它在本质上就是能够处理 JSON 请求的服务器,返回 JSON 数据

可以使用 curl 来发送 REST 请求,例如:

curl -XGET 127.0.0.1:9200/tags/_search?pretty

请求查找索引为 tags 的所有数据

二、安装与基本操作

Step through this getting started tutorial to:

  1. Get an Elasticsearch cluster up and running
  2. Index some sample documents
  3. Search for documents using the Elasticsearch query language
  4. Analyze the results using bucket and metrics aggregations

官方 推荐在 Elastic Cloud 上运行,但我还是想在本地的 Linux 上运行。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值