当前位置:   article > 正文

ElasticSearch 7 权威指南(二)Elasticsearch入门_elachsearch7权威指南

elachsearch7权威指南

准备好试用Elasticsearch并亲自了解如何使用RESTAPI来存储、搜索和分析数据了吗?

逐步完成以下入门教程:

  • 安装、运行Elasticsearch集群。
  • 为一些示例文档建立索引
  • 使用Elasticsearch查询语言搜索文档。
  • 使用分组和指标聚合分析结果。

需要更多背景信息?

查看Elasticsearch简介以学习术语,并了解Elasticsearch的工作原理。 如果您已经熟悉Elasticsearch并想了解它如何与其余组件一起工作,则可能需要跳到Elastic Stack教程,以了解如何使用Elasticsearch,Kibana,Beats和 Logstash。

安装、运行 Elasticsearch

如需用Elasticsearch来测试,您可以在Elasticsearch Service上部署一个托管服务,或在您自己的Linux,macOS或Windows计算机上配置多节点Elasticsearch集群。

在 Elastic Cloud 上运行 Elasticsearch

在Elasticsearch Service上部署托管服务时,该服务与Kibana和APM一起预分配一个三节点Elasticsearch集群。

要在云端部署,你需要:

  • 注册免费试用版,然后验证您的电子邮件地址。
  • 为您的帐户设置密码。
  • 单击创建部署。

创建部署后,就可以为一些文档建立索引了。

本地(Linux、MacOS、Windows)安装运行Elasticsearch

通过从tar或zip安装文件安装,您可以在本地启动Elasticsearch的多个实例,这样可以查看多节点集群的行为。

安装步骤:

  1. 下载Elasticsearch安装包
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz
  • 1
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-darwin-x86_64.tar.gz
  • 1
  1. 解压安装包
  • Linux:
tar -xvf elasticsearch-7.8.0-linux-x86_64.tar.gz
  • 1
  • MacOs:
tar -xvf elasticsearch-7.8.0-darwin-x86_64.tar.gz
  • 1
  • Windows PowerShell:
Expand-Archive elasticsearch-7.8.0-windows-x86_64.zip
  • 1
  1. 从bin目录启动Elasticsearch
  • Linux and MacOS:
cd elasticsearch-7.8.0/bin
./elasticsearch
  • 1
  • 2
  • Windows:
cd elasticsearch-7.8.0\bin
.\elasticsearch.bat
  • 1
  • 2

现在,您已经启动运行了一个单节点Elasticsearch集群!

  1. 启动另外两个Elasticsearch实例,以便您可以看到典型的多节点集群的行为。 您需要为每个节点指定唯一的数据和日志路径。
  • Linux and macOS:
./elasticsearch -Epath.data=data2 -Epath.logs=log2
./elasticsearch -Epath.data=data3 -Epath.logs=log3
  • 1
  • 2
  • Windows:
.\elasticsearch.bat -E path.data=data2 -E path.logs=log2
.\elasticsearch.bat -E path.data=data3 -E path.logs=log3
  • 1
  • 2

新增的节点都会被分配唯一的ID。因为您所有节点都在本地运行,所以它们会自动加入第一个节点所在的集群。

  1. 使用cat health API验证三节点集群是否正在运行。 cat API以比原始JSON更易于阅读的格式返回有关集群和索引的信息。

您可以通过向Elasticsearch rest API提交HTTP请求来直接与集群交互。如果您已经安装并运行了Kibana,您还可以打开 Kibana 通过 Dev Tools 控制台提交请求。

GET /_cat/health?v
  • 1

该响应表明Elasticsearch集群的状态为绿色,并且具有三个节点:

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1565052807 00:53:27  elasticsearch green           3         3      6   3    0    0        0             0                  -                100.0%
  • 1
  • 2

如果您运行是Elasticsearch的单实例,则群集状态将保持为黄色。单节点群集功能齐全,但无法将数据复制到另一个节点以提供备份恢复能力。要使群集状态为绿色,副本分片必须可用。如果群集状态为红色,则某些数据不可用。

使用 cURL 命令与Elasticsearch交互

本指南中的大多数示例都可以转为相应的curl命令,并从 shell 将请求提交给本地 Elasticsearch实例。

例如下面的在 Dev Tools 控制台的请求:

GET /_cat/health?v
  • 1

在下面shell里面可以用如下请求代替:

curl -X GET "localhost:9200/_cat/health?v"
  • 1

一个完整的 HTTP 请求参数如下:

curl -X <VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
  • 1

变量参数解释如下:
<VERB>
HTTP method,例如,GET、POST、PUT、HEAD或DELETE。

<PROTOCOL>
协议,可用 http 或 https ,如果使用 https 协议跟 Elasticsearch 通信,则需要 Elasticsearch 安全特性来对 http 通信进行加密。

<HOST>
Elasticsearch集群中任何节点的主机名。本地计算机使用localhost。

<PORT>
运行Elasticsearch HTTP服务的端口,默认为9200。

<PATH>
API终端,可以包含多个组件,如_cluster/stats或_node/stats/jvm。

<QUERY_STRING>
任何可选的查询字符串参数。比如 ?pretty 参数将会优雅的打印更易于阅读的JSON返回。

<BODY>
JSON格式的请求正文(如果需要)。

如果启用了Elasticsearch安全功能,您还必须提供有权运行API的有效用户名(和密码)。例如,curl 命令使用 -u 或 --u 参数提供用户信息 。有关运行每个API需要哪些安全权限的详细信息,请参阅 REST APIs

ElasticSearch使用HTTP状态代码(如200OK)响应每个API请求。除了HEAD请求之外,它还返回JSON格式的响应正文。

其它安装方式

通过从打包文件安装Elasticsearch,您可以轻松地在本地安装和运行多个实例,要运行单个实例,您可以在Docker容器中运行Elasticsearch,在Linux上使用DEB或RPM软件包安装Elasticsearch,在MacOS上使用Homebrew安装,或者在Windows上使用MSI软件包安装程序安装。有关详细信息,请参阅安装Elasticsearch

创建文档索引

单个文档索引

一旦集群启动并运行,您就可以为数据建立索引了。Elasticsearch有各种各样的访问方式将JSON文档加入Elasticsearch索引。

您可以通过一个简单的PUT请求直接完成此操作,请求需要指定文档的索引、文档的唯一ID以及请求正文中的一个或多个kv键值对:

PUT /customer/_doc/1
{
   
  "name": "John Doe"
}
  • 1
  • 2
  • 3
  • 4
  • 5

上面的 customer 就是该文档的索引,上面请求会自动创建 customer 索引,上面 _doc 则是文档的 type。而文档的ID 则是1。

注:因为如下各方面原因,在 Elasticsearch 7版本中,已经将 type 去掉了,但是为了兼容老格式,经常会将 _doc 作为一个唯一的 type。
1、我们经常把二维数据库与ES作类比的方式是不正确的假设。把“index”类比为数据库,“type”类比为表。具体原因是,数据库的表是物理独立的,一个表的列跟另外一张表相同名称的列没有关系,而ES中并非如此,不同type映射类型中具有相同名称的字段在内部由相同的Lucene字段支持。
2、当您想要索引一个deleted字段在不同的type中数据类型不一样。一个类型中为日期字段,另外一个类型中为布尔字段时,这可能会导致ES的存储失败,因为这影响了ES的初衷设计。
3、另外,在一个index中建立很多实体,type,没有相同的字段,会导致数据稀疏,最终结果是干扰了Lucene有效压缩文档的能力,说白了就是影响ES的存储、检索效率。

上面请求会返回下面的JSON结果,包含数据的一些元信息,由于是新创建的一个文档,所以文档版本 _version = 1。

{
   
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
   
    "total" : 2,
    "successful" :</
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号