赞
踩
准备好试用Elasticsearch并亲自了解如何使用RESTAPI来存储、搜索和分析数据了吗?
逐步完成以下入门教程:
需要更多背景信息?
查看Elasticsearch简介以学习术语,并了解Elasticsearch的工作原理。 如果您已经熟悉Elasticsearch并想了解它如何与其余组件一起工作,则可能需要跳到Elastic Stack教程,以了解如何使用Elasticsearch,Kibana,Beats和 Logstash。
如需用Elasticsearch来测试,您可以在Elasticsearch Service上部署一个托管服务,或在您自己的Linux,macOS或Windows计算机上配置多节点Elasticsearch集群。
在Elasticsearch Service上部署托管服务时,该服务与Kibana和APM一起预分配一个三节点Elasticsearch集群。
要在云端部署,你需要:
创建部署后,就可以为一些文档建立索引了。
通过从tar或zip安装文件安装,您可以在本地启动Elasticsearch的多个实例,这样可以查看多节点集群的行为。
安装步骤:
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-darwin-x86_64.tar.gz
tar -xvf elasticsearch-7.8.0-linux-x86_64.tar.gz
tar -xvf elasticsearch-7.8.0-darwin-x86_64.tar.gz
Expand-Archive elasticsearch-7.8.0-windows-x86_64.zip
cd elasticsearch-7.8.0/bin
./elasticsearch
cd elasticsearch-7.8.0\bin
.\elasticsearch.bat
现在,您已经启动运行了一个单节点Elasticsearch集群!
./elasticsearch -Epath.data=data2 -Epath.logs=log2
./elasticsearch -Epath.data=data3 -Epath.logs=log3
.\elasticsearch.bat -E path.data=data2 -E path.logs=log2
.\elasticsearch.bat -E path.data=data3 -E path.logs=log3
新增的节点都会被分配唯一的ID。因为您所有节点都在本地运行,所以它们会自动加入第一个节点所在的集群。
您可以通过向Elasticsearch rest API提交HTTP请求来直接与集群交互。如果您已经安装并运行了Kibana,您还可以打开 Kibana 通过 Dev Tools 控制台提交请求。
GET /_cat/health?v
该响应表明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%
如果您运行是Elasticsearch的单实例,则群集状态将保持为黄色。单节点群集功能齐全,但无法将数据复制到另一个节点以提供备份恢复能力。要使群集状态为绿色,副本分片必须可用。如果群集状态为红色,则某些数据不可用。
本指南中的大多数示例都可以转为相应的curl命令,并从 shell 将请求提交给本地 Elasticsearch实例。
例如下面的在 Dev Tools 控制台的请求:
GET /_cat/health?v
在下面shell里面可以用如下请求代替:
curl -X GET "localhost:9200/_cat/health?v"
一个完整的 HTTP 请求参数如下:
curl -X <VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
变量参数解释如下:
<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"
}
上面的 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" :</
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。