elasticsearch6.7 01.入门指南(2)

目录

  • 2、安装(略)
  • 3、探索集群
    • 3.1 The REST API
    • 3.2. Cluster Health(集群健康)
    • 3.3 List All Indices(查看所有索引)
    • 3.4 Create an Index(创建索引)
    • 3.5 索引和查询文档
    • 3.6 Delete an Index(删除索引)

2、安装(略)

默认情况下,elasticsearch 使用端口 9200 来访问它的 REST API。如果有必要,该端口也可以配置

3、探索集群

3.1 The REST API

既然我们已经启动并且运行了我们的节点(和集群),下一步是去了解如何与它通信。幸运的是,elasticsearch 提供了一个非常全面且强大的 REST API,您可以使用它来与集群进行交互。可以使用 API 来完成如下的几件事情 :

  • 检查集群,节点,和索引的健康,状态和统计信息。
  • 管理集群,节点和索引数据以及元数据。
  • 针对索引执行 CRUD(Create,Read,Update,和 Delete)和搜索操作。
  • 执行高级搜索,例如 paging,sorting,filtering,scripting,aggregations 等等。

3.2. Cluster Health(集群健康)

让我们从基本的健康检查开始,我们可以用它来看看我们的集群在做什么。我们将使用 curl 来做这件事情,当然您也可以使用任何允许您进行 HTTP/REST 调用的工具。假设我们在同一节点上启动了 elasticsearch 并且打开了另一个命令 shell 窗口。 为了检查集群健康,我们将使用 _cat API。您可以在 Kibana的控制台中通过点击 “VIEW IN CONSOLE” 或者通过点击下面的 “COPY AS CURL” 链接然后粘贴到终端中使用 curl 中运行该命令 :

#shell窗口
curl -XGET 'localhost:9200/_cat/health?v&pretty'

#kibana中
GET /_cat/indices?v

响应如下 :

epoch      timestamp   cluster      status node.total node.data shards pri relo init
1475247709 17:01:49    elasticsearch green      1          1      0     0    0    0
unassign pending_tasks max_task_wait_time active_shards_percent
    0         0                 -               100%

我们可以看到名为 “elasticsearch” 的集群处于绿色状态。

每当我们请求集群健康时,我们得到的集群状态分为绿色、黄色,和红色。

  • 绿色表示一切正常(集群功能齐全)
  • 黄色表示所有数据可用,但是有些副本尚未分配(集群功能齐全)
  • 红色意味着由于某些原因有些数据不可用(可以使用集群的部分功能)

注意,集群是红色时,它仍然具有部分功能(例如,它将继续从可用的分片中提供搜索服务),但是您应该尽快去修复它,因为您已经丢失数据了。

另外,从上面的响应中,我们可以看到共计 1 个 node(节点)和 0 个 shard(分片),因为我们还没有在其中放入数据。请注意,由于我们使用的是默认的集群名称(elasticsearch),并且 elasticsearch 默认情况下使用单播网络来发现同一机器上的其它节点。有可能您不小心在您的电脑上启动了多个节点,默认情况下它们都会加入该群集。在这种情况下,你会在上面的响应中看到多个节点。

我们也可以获取集群的节点列表,如下所示 :

curl -XGET 'localhost:9200/_cat/nodes?v'

#kibana中
GET /_cat/nodes?v

响应如下 :

ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1           10           5   5    4.46                       mdi      *      PB2SGZY

在这里,我们可以到命名为 “PB2SGZY ” 的节点名,这是目前在我们集群中的唯一节点。

3.3 List All Indices(查看所有索引)

现在,让我们来查看下所有的索引 :

curl -XGET 'localhost:9200/_cat/indices?v'

GET /_cat/indices?v

响应如下 :

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

没有具体的值,这意味着elasticsearch集群中还没有索引。

3.4 Create an Index(创建索引)

现在我们创建一个名为 “customer” 的索引,然后再列出所有索引 :

curl -XPUT 'localhost:9200/customer?pretty&pretty'
curl -XGET 'localhost:9200/_cat/indices?v&pretty'

#kibana中
PUT /customer?pretty
GET /_cat/indices?v

这是第一个使用PUT动作命令创建名为 customer 的索引。只需在调用的末尾附加pretty命令就可以可视化地打印JSON响应(如果有的话)
响应如下 :

health status index     uuid   pri rep docs.count docs.deleted store.size pri.store.size
yellow  open   customer 95SQ4   5   1       0          0           260b        260b

第二个命令的结果告诉我们现在已经有 1 个名为customer的索引,并且它有 5 个主分片和 1 个副本(默认值)以及0个文档。

您可能也注意到customer索引中有一个yellow健康标记。回想下我们先前的讨论, yellow 意味着有些副本还没有被分配。该索引发生这种情况的原因,是因为默认情况下elasticsearch为此索引创建了一个副本。因为目前只有一个节点在运行,所以在另一个节点加入集群之前,还不能分配一个副本(为了高可用性)。一旦该副本分配到第二个节点上,该索引的运行状况将变为绿色。

3.5 索引和查询文档

现在让我们放入一些东西动我们的 customer 索引中去。让我们在 customer 索引中index一个ID为1的客户文档,如下所示:

curl -XPUT 'localhost:9200/customer/_doc/1?pretty&pretty' -d'
{
  "name": "John Doe"
}'

PUT /customer/_doc/1?pretty
{
    "name":"John Doe"
}

响应如下 :

{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

从上面我们可以看到在客户索引中成功地创建了一个新的客户文档。该文档还有一个为1的内部 ID,它是我们在索引时指定的。

需要注意的是,您无需在索引文档之前先显式地创建索引。在前面的例子中,如果customer 索引事先不存在,Elasticsearch 将自动的创建 customer 索引。

现在让我们检索我们刚刚索引的文档 :

curl -XGET 'localhost:9200/customer/_doc/1?pretty&pretty'

GET /customer/_doc/1?pretty

响应如下 :

{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "_seq_no" : 25,
  "_primary_term" : 1,
  "found" : true,
  "_source" : { "name": "John Doe" }
}

除了一个字段found之外,上面没有什么特别的东西。结果说明我们找到了一个ID为1的文档,其中字段_source返回了我们从上一步索引的完整JSON文档。

3.6 Delete an Index(删除索引)

现在让我们删除刚才创建的索引并且再次列出所有索引 :

curl -XDELETE 'localhost:9200/customer?pretty&pretty'
curl -XGET 'localhost:9200/_cat/indices?v&pretty'

DELETE /customer?pretty
GET /_cat/indices?v

响应如下 :

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

这意味着索引被成功的删除,并且我们现在又回到了集群没有索引的初始状态了。

在我们继续之前,让我们仔细的看一看一些我们迄今为止学习的 API 命令 :

PUT /customer
PUT /customer/_doc/1
{
  "name": "John Doe"
}
GET /customer/_doc/1
DELETE /customer

如果我们仔细的研究上面的命令,我们可以清楚的看到,我们如何访问 Elasticsearch 中的数据的 pattern(模式)。该 pattern(模式)可以概括如下 :

<HTTP Verb> /<Index>/<Type>/<ID>

这种REST访问模式在所有API命令中都是非常普遍的,如果您可以简单的记住它,对您掌握 Elasticsearch 会有一个良好的开端。

原文地址:https://www.cnblogs.com/wtc1994/p/10703030.html

时间: 2024-11-02 05:43:28

elasticsearch6.7 01.入门指南(2)的相关文章

elasticsearch6.7 01.入门指南(4)

5.Exploring Your Data(探索数据) Sample Dataset(样本数据集) 现在我们已经学会了基础知识,让我们尝试在更真实的数据集上操作.我准备了一份顾客银行账户信息的虚构的 JSON 文档样本.每个文档都有以下的schema(模式): { "account_number": 0, "balance": 16623, "firstname": "Bradshaw", "lastname&quo

AngularJS快速入门指南01:导言

AngularJS使用新的attributes扩展了HTML AngularJS对单页面应用的支持非常好(SPAs) AngularJS非常容易学习 现在就开始学习AngularJS吧! 关于本指南 本指南旨在帮助你尽可能快速而有效地学习AngularJS.通过该指南你会学习到AngularJS的一些基本特性,例如指令.表达式.过滤器.模块和控制器等.以及其它所有你需要知道的有关AngularJS的东西,如事件.DOM节点.表单.用户输入.数据验证.Http对象等. AngularJS快速入门指

Asp.Net MVC4入门指南(8):给数据模型添加校验器

在本节中将会给Movie模型添加验证逻辑.并且确保这些验证规则在用户创建或编辑电影时被执行. 保持事情 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(Don't Repeat Yourself)".ASP.NET MVC鼓励您指定功能或者行为,只做一次,然后将它应用到应用程序的各个地方.这可以减少您需要编写的代码量,并减少代码出错率,易于代码维护. 给ASP.NET MVC 和 Entity Framework Code First 提供验证支持是 DR

Asp.Net MVC4入门指南(9):查询详细信息和删除记录

在本教程中,您将查看自动生成的Details和Delete方法. 查询详细信息和删除记录 打开Movie控制器并查看Details方法. public ActionResult Details(int id = 0) { Movie movie = db.Movies.Find(id); if (movie == null) { return HttpNotFound(); } return View(movie); } Code First 使得您可以轻松的使用Find方法来搜索数据.一个重要

AngularJS快速入门指南02:介绍

AngularJS是一个JavaScript框架.它可以通过<script>标记被添加到HTML页面中. AngularJS通过指令对HTML属性进行了扩展,然后通过表达式将数据绑定到HTML元素中. AngularJS是一个JavaScript框架 AngularJS是一个JavaScript框架,它是由JavaScript语言编写的类库. AngularJS以JavaScript文件的形式进行发布,我们可以通过script标记将它添加到web页面中: <script src=&quo

Asp.Net MVC4入门指南(5):从控制器访问数据模型

在本节中,您将创建一个新的MoviesController类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示在浏览器里. 在开始下一步前,先Build一下应用程序(生成应用程序)(确保应用程序编译没有问题) 用鼠标右键单击Controller文件夹,并创建一个新的 MoviesController控制器.当Build成功后,会出现下面的选项.设定以下选项: · 控制器名称: MoviesController.(这是默认值). · 模板: MVC Controll

Asp.Net MVC4入门指南(7):给电影表和模型添加新字段

在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的.如果他们不是同步的,Entity Framework将抛出一个错误.这非常方便的在开发时就可以发现错误,否则您可能会在运行时才发现这个问题. (由

Asp.Net MVC4入门指南(4):添加一个模型

在本节中,您将添加一些类,这些类用于管理数据库中的电影.这些类是ASP.NET MVC 应用程序中的"模型(Model)". 您将使用.NET Framework 数据访问技术Entity Framework,来定义和使用这些模型类.Entity Framework(通常称为 EF) 是支持代码优先的开发模式.代码优先允许您通过编写简单的类来创建对象模型.(相对于"原始的CLR objects",这也被称为POCO 类)然后可以从您的类创建数据库,这是一个非常干净快

Asp.Net MVC4入门指南(3):添加一个视图

在本节中,您需要修改HelloWorldController类,从而使用视图模板文件,干净优雅的封装生成返回到客户端浏览器HTML的过程. 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所引入的Razor视图引擎.Razor视图模板文件使用.cshtml文件扩展名,并提供了一个优雅的方式来使用C#语言创建所要输出的HTML.用Razor编写一个视图模板文件时,将所需的字符和键盘敲击数量降到了最低,并实现了快速,流畅的编码工作流程. 当前在控制器类中的Index方法返回了一个硬编码