Elasticsearch (详细教程)
Elasticsearch是基于Apache Lucene的搜索服务器。它由Shay Banon开发并于2010年出版。现在由Elasticsearch BV维护。它的最新版本是7.0.0。Elasticsearch是一个实时的分布式开放源代码全文本搜索和分析引擎。可从RESTful Web服务界面访问它,并使用无模式的JSON(JavaScript对象表示法)文档存储数据。它基于Java编程语言
简介:本教程旨在以一种简单和系统的方式配置 SAP 的 HR 模块。它包含了大量的截图,对顾问和终端用户都很有用。
在开始学习本教程之前,您应该对 Java、 JSON、搜索引擎和 web 技术有一个基本的了解。与 Elasticsearch 的交互是通过 restfulapi 实现的; 因此,总是建议您了解 restful api。
如果你是这些概念中的任何一个的新手,我们建议你在开始使用 Elasticsearch 之前,在这些主题的基础上寻求教程的帮助。
Elasticsearch 简介
Elasticsearch是基于Apache Lucene的搜索服务器。它由Shay Banon开发并于2010年出版。现在由Elasticsearch BV维护。它的最新版本是7.0.0。
Elasticsearch是一个实时的分布式开放源代码全文本搜索和分析引擎。可从RESTful Web服务界面访问它,并使用无模式的JSON(JavaScript对象表示法)文档存储数据。它基于Java编程语言构建,因此Elasticsearch可以在不同平台上运行。它使用户能够以很高的速度浏览大量的数据。
特性
Elasticsearch的常见特性如下-
-
Elasticsearch最多可扩展至PB级的结构化和非结构化数据。
-
Elasticsearch可以代替MongoDB和RavenDB等文档存储。
-
Elasticsearch使用非规范化来提高搜索性能。
-
Elasticsearch是流行的企业搜索引擎之一,目前已被Wikipedia,The Guardian,StackOverflow,GitHub等许多大型组织使用。
-
Elasticsearch是一个开放源代码,可在Apache许可版本2.0下使用。
关键概念
Elasticsearch的关键概念如下-
节点
它指的是Elasticsearch的单个运行实例。单个物理和虚拟服务器可容纳多个节点,这取决于它们的物理资源(如RAM、存储和处理能力)的能力。
群集
它是一个或多个节点的集合。群集为所有数据提供了跨所有节点的集体索引和搜索功能。
索引
它是不同类型的文档及其属性的集合。索引还使用分片的概念来提高性能。例如,一组文档包含社交网络应用程序的数据。
文档
它是以JSON格式定义的特定方式的字段集合。每个文档都属于一种类型,并且位于索引内。每个文档都与一个称为UID的唯一标识符相关联。
碎片
索引在水平方向上细分为碎片。这意味着每个分片都包含文档的所有属性,但所包含的JSON对象的数量要少于索引。水平分隔使分片成为一个独立的节点,可以将其存储在任何节点中。主分片是索引的原始水平部分,然后将这些主分片复制到副本分片中。
副本
Elasticsearch允许用户创建索引和碎片的副本。复制不仅有助于在发生故障时提高数据的可用性,而且还通过在这些副本中执行并行搜索操作来提高搜索性能。
优势
-
Elasticsearch是在Java上开发的,这使得它在几乎所有平台上都兼容。
-
Elasticsearch是实时的,换句话说,一秒钟后添加的文档就可以在这个引擎中搜索了
-
Elasticsearch是分布式的,因此可以轻松地在任何大型组织中进行扩展和集成。
-
使用 gateway 的概念创建完整的备份非常简单,这个概念在 Elasticsearch 很常见。
-
与Apache Solr相比,在Elasticsearch中处理多租户非常容易。
-
Elasticsearch使用JSON对象作为响应,这使得可以使用大量不同的编程语言来调用Elasticsearch服务器。
-
除了不支持文本渲染的文档类型外,Elasticsearch支持几乎所有文档类型。
缺点
-
在处理请求和响应数据方面,Elasticsearch不提供多语言支持(仅在JSON中可用),与Apache Solr不同,后者可以CSV,XML和JSON格式。
-
有时,Elasticsearch会出现脑裂情况的问题。
Elasticsearch和RDBMS之间的比较
在Elasticsearch中,索引类似于RDBMS(关系数据库管理系统)中的表。每个表都是行的集合,就像每个索引都是Elasticsearch中的文档的集合一样。
下表对这些术语进行了直接比较-
| Elasticsearch | 关系数据库管理系统(RDBMS) |
|---|---|
| 群集 | Database |
| 碎片 | 碎片 |
| 索引 | 表 |
| 字段 | 列 |
| 文档 | 行 |
Elasticsearch 安装
在本章中,我们将详细了解Elasticsearch的安装过程。
要在本地计算机上安装Elasticsearch,您将必须执行以下步骤-
Step 1−检查计算机上安装的Java版本。它应该是Java 7或更高版本。您可以通过执行以下操作进行检查-
在Windows操作系统(OS)中(使用命令提示符)-
> java -version
在UNIX OS(使用终端)中-
$ echo $JAVA_HOME
Step 2 −根据您的操作系统,如下所述从www.elastic.co下载Elasticsearch −
-
对于Windows操作系统,请下载ZIP文件。
-
对于UNIX OS,请下载TAR文件。
-
对于Debian OS,请下载DEB文件。
-
对于Red Hat和其他Linux发行版,请下载RPN文件。
-
APT和Yum实用程序还可用于在许多Linux发行版中安装Elasticsearch。
Step 3 − Elasticsearch的安装过程很简单,下面针对不同的操作系统进行介绍−
-
Windows OS−解压zip包,然后安装Elasticsearch。
-
UNIX OS−将tar文件解压缩到任何位置,然后安装Elasticsearch。
$wget
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch7.0.0-linux-x86_64.tar.gz
$tar -xzf elasticsearch-7.0.0-linux-x86_64.tar.gz
-
在 Linux 操作系统中使用 APT 实用程序−下载并安装公共签名密钥
$ wget -qo - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo
apt-key add -
保存存储库定义,如下所示:
$ echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" |
sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
使用以下命令运行更新-
$ sudo apt-get update
现在您可以使用以下命令进行安装-
$ sudo apt-get install elasticsearch
-
使用这里给出的命令手动下载并安装 Debian 包
$wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch7.0.0-amd64.deb
$sudo dpkg -i elasticsearch-7.0.0-amd64.deb0
下载并安装公共签名密钥-
-
在Debian Linux操作系统上使用YUM实用程序
$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
-
将以下文本添加到您的“ /etc/yum.repos.d/”目录中的后缀为.repo的文件中。例如,elasticsearch.repo
elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
-
您现在可以使用以下命令安装Elasticsearch
sudo yum install elasticsearch
Step 4−转到Elasticsearch主目录并位于bin文件夹中。如果使用Windows,则运行elasticsearch.bat文件;如果使用UNIX rum弹性搜索文件,则可以使用命令提示符并通过终端执行相同的操作。
在Windows中
> cd elasticsearch-2.1.0/bin
> elasticsearch
在Linux中
$ cd elasticsearch-2.1.0/bin
$ ./elasticsearch
注意 −如果是Windows,您可能会收到错误消息,指出未设置JAVA_HOME,请在环境变量中将其设置为“ C:\ Program Files \ Java \ jre1.8.0_31”或安装Java的位置。
Step 5− Elasticsearch Web界面的默认端口是9200,或者您可以通过更改bin目录中存在http.port的elasticsearch.yml文件内部来更改它。您可以通过浏览检查服务器是否已启动并正在运行http://localhost:9200。它将以以下方式返回JSON对象,其中包含有关已安装的Elasticsearch的信息-
{
"name" : "Brain-Child",
"cluster_name" : "elasticsearch", "version" : {
"number" : "2.1.0",
"build_hash" : "72cd1f1a3eee09505e036106146dc1949dc5dc87",
"build_timestamp" : "2015-11-18T22:40:03Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
},
"tagline" : "You Know, for Search"
}
Step 6−在此步骤中,让我们安装Kibana。请按照下面给出的相应代码在Linux和Windows上进行安装-
适用于在 Linux上安装
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.0.0-linuxx86_64.tar.gz
tar -xzf kibana-7.0.0-linux-x86_64.tar.gz
cd kibana-7.0.0-linux-x86_64/
./bin/kibana
用于在Windows上安装-
从https://www.elastic.co/products/kibana下载Windows版Kibana 。单击链接后,您将找到如下所示的主页-
解压缩并转到Kibana主目录,然后运行它。
CD c:\kibana-7.0.0-windows-x86_64
.\bin\kibana.bat
Elasticsearch 填充
在本章中,我们将学习如何向 Elasticsearch 添加一些索引、映射和数据。注意,这些数据中的一些将在本教程中解释的示例中使用。
创建索引
您可以使用以下命令创建索引-
PUT school
响应
如果创建了索引,则可以看到以下输出-
{"acknowledged": true}
添加数据
Elasticsearch将存储我们添加到索引中的文档,如以下代码所示。给文档提供了一些ID,这些ID用于识别文档。
请求正文
POST school/_doc/10
{
"name":"Saint Paul School", "description":"ICSE Afiliation",
"street":"Dawarka", "city":"Delhi", "state":"Delhi", "zip":"110075",
"location":[28.5733056, 77.0122136], "fees":5000,
"tags":["Good Faculty", "Great Sports"], "rating":"4.5"
}
响应
{
"_index" : "school",
"_type" : "_doc",
"_id" : "10",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 2,
"_primary_term" : 1
}
在这里,我们添加了另一个类似的文档。
POST school/_doc/16
{
"name":"Crescent School", "description":"State Board Affiliation",
"street":"Tonk Road",
"city":"Jaipur", "state":"RJ", "zip":"176114","location":[26.8535922,75.7923988],
"fees":2500, "tags":["Well equipped labs"], "rating":"4.5"
}
响应
{
"_index" : "school",
"_type" : "_doc",
"_id" : "16",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 9,
"_primary_term" : 7
}
这样,我们将在接下来的章节中继续添加工作所需的任何示例数据。
在Kibana中添加样本数据
Kibana是一个GUI驱动的工具,用于访问数据和创建可视化。在本节中,让我们了解如何向其中添加样本数据。
在Kibana主页中,选择以下选项以添加示例电子商务数据-

下一个屏幕将显示一些可视化效果和一个添加数据的按钮-

单击添加数据将显示以下屏幕,确认该数据已添加到名为eCommerce的索引中。

更多推荐
所有评论(0)