Elasticsearch 开发实战常用命令清单

标签: | 发表时间:2020-09-19 22:46 | 作者:
出处:https://mp.weixin.qq.com

0、背景

Elasticsearch 具有一组丰富的易于理解的 REST API,这些 API  均可如下几种方式通过 HTTP 调用进行访问。

  • Curl
  • Postman
  • head 插件
  • cerebro 工具
  • kibana

开发实战环节,我推荐使用:kibana Dev-tools。

原因如下:

  • 有提示功能
  • 方便快捷、效率高
  • 不容易出错

本文结合多年实战经验和网络资源,梳理出开发环节最重要的命令清单,希望对你有帮助!

1、Elasticsearch REST URL 拆解

1.1 REST URL和选项概述

举个栗子:

    POST products/_search?size=0      
{
  "aggs": {
    "product_aggs": {
      "terms": {
        "field":"name.keyword"
      }
    }
  }
}

调用REST API很容易,除了实际的主机名/ IP和端口外,它还包含四个部分:

  • 动词——REST调用的 GET,PUT,POST和DELETE部分。

在Kibana中,您可以直接指定这些名称,对于cURL,请使用-X选项。

对应示例中的:POST

  • 路径——API和路径。

例如:/_cluster / health 或 /logstash-cron-2020.07.03/_mapping-路径的第一部分通常是索引名称,除非它以_开头。

对应示例中的:products/_search,其中products是索引。

  • 参数——后面的各种选项?

例如?h或?v

对应示例中的:?size=0。参数设定部分。

  • 正文——某些调用需要JSON正文(例如设置选项),并将包含在{}中

对应示例中的:检索语句部分。

1.2 常用选项

有一些通用选项适用于许多(不是全部)URL。这些是:

  • ?help——帮助选项。

将在列表中提供 API 可用的字段,其中包含短名称和长名称、说明等。

举例:

    GET _cat/indices?help      
  • ?h =-“ h”——使用上方“帮助”显示中的短名称或长名称指定要包括在结果中的字段。这些用逗号分隔,没有空格。

举例:

    GET _cat/indices?h=docs.count,store.size      

这样以后返回结果一头雾水,相当于 Excel 有 N 列字段,但没有表头一样,很痛苦!

  • ?v——'v'在回复的顶部包括字段名称。
    GET _cat/indices?h=docs.count,store.size&v      

-v 参数的妙处主要体现在:加上了表头,直观交互呈现。

  • ?s——'s'用于排序,使用列出的字段作为排序键。

如下所示:我们可能会看到节点列表。包括:返回字段名称,字段名称要显示并按名称name排序:

    GET /_cat/nodes?v&h=heap.percent,diskUsedPercent,cpu,master,name&s=name      

另外,Kibana 会将您的 Dev Tools 查询保存在 cookie 中。

有了上面的背景知识,下面的常见开发相关的常用命令清单看起来就相对容易了。

2、状态 & 统计相关命令清单

最有用的 API 调用通常与集群的运行状况,状态和统计信息有关,例如:

2.1 获取版本和集群名称等信息。

    GET /       

2.2 获取集群健康状态等信息,包括集群名称、节点数、数据节点数、分片等的一些统计信息。

    GET /_cluster/health      

2.3 获取节点列表信息。显示了堆内存、磁盘使用情况,CPU 、负载和主机角色。

用途:用来监视负载和磁盘使用情况以及主机角色。

    GET /_cat/nodes?v&h=heap.percent,diskUsedPercent,cpu,load_1m,master,name&s=name      

2.4 Index Level 索引层面健康

    GET /_cluster/health?level=indices&pretty      

2.5 Shard Level 分片层面健康

    GET /_cluster/health?level=shards&pretty      

2.6 获取索引,文档,缓存,段,节点等的集群统计信息的更深入概述。

用途:有助于基本故障排除。

    GET /_cluster/stats       

2.7 获取节点级别的更多统计信息,包括堆使用情况等。

    GET /_nodes/stats       

3、线程相关状态&统计命令清单

3.1 很长但有用的线程队列视图

    GET /_cat/thread_pool?v&h=node_name,name,type,active,size,queue,queue_size,rejected,largest,completed,min,max&s=node_name,name      

3.2 查看热点线程,用于排查谁在占用CPU资源等

    GET /_nodes/hot_threads/       

3.3 快速获取索引模式。

例如:所有这些logstash *前缀索引的文档总数的方法。

    GET /_cat/count/logstash*?v      

4、索引相关状态&统计命令清单

4.1 通配符索引列表获取

包含:大小,文档计数,状态等。

    GET /_cat/indices/logstash*?v      

4.2 找到size 最大的索引

    GET /_cat/indices/logstash-*?v&h=index,ss&s=ss:desc      

4.3 获取状态为黄色的索引

    GET /_cat/indices?v&health=yellow      
  • 红色 red:至少一个主分片不可用。
  • 黄色 yellow:至少一个副本分片不可用。
  • 绿色 green:集群主、副本分片都可用,集群健康。

5、 设置相关清单

Elasticsearch中有许多设置,但最常见的是“集群”和“索引”级别。

5.1  集群设置

最基本的集群设置视图——显示非默认的持久性和瞬态设置信息。

    GET /_cluster/settings      

更大的列表视图——包括所有默认值,并使用平面视图使其更易于阅读。

    GET /_cluster/settings?include_defaults=true&flat_settings=true      

5.2 索引设置

获取指定索引的设置列表信息。

    GET /logstash-cron-2020.08.03/_settings       

获取索引的元信息、设置信息以及Mapping信息。

    GET /logstash-cron-2020.08.03       

6、 关闭&删除索引

6.1 关闭索引

支持单个或者模糊匹配多个索引。

    POST /logstash-*-2020.03.*/_close       

6.2 删除索引

支持单个或者模糊匹配多个

    DELETE /logstash-*-2020.04.*       

7、故障排查清单

之前运维清单有过陈述,开发也需要。

7.1 获取:已分配和未分配的分片。

    GET /_cat/shards?v&h=n,index,shard,prirep,state,sto,sc,unassigned.reason,unassigned.details&s=sto,index      

7.2 查看未分配的分片及原因

    GET _cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state       

7.3 查看未分配的细节说明信息

    GET /_cluster/allocation/explain      

7.4 查看指定分片未分配的细节

    GET /_cluster/alloGET /_cluster/allocation/explain       
{ "index": "logstash-cloudtrail-2019.10.16", "shard": 0, "primary": true} cation/explain { "index": "logstash-cloudtrail-2019.10.16", "shard": 0, "primary": true} 

7.5 下线节点

    PUT _cluster/settings?pretty      
{
  "transient": {
    "cluster.routing.allocation.exclude._ip": "10.0.0.1"
  }
}

8、模板清单

8.1 列举已定义的所有模板

    GET /_cat/templates?v&s=order,name      

8.2 列举指定名称的模板信息

    GET /_template/logstash      

9、快照&恢复

9.1 列出系统中配置的快照存储库。大多数其他API调用都需要这些名称。

    GET /_snapshot       

9.2 获取任何正在运行的快照的状态和统计信息

    GET /_snapshot/_status       

9.3 获取快照的有用信息

    GET /_cat/snapshots/my_repository?v&h=id,status,start_time,duration,indicies,successful_shards,failed_shards,total_shards      

10、 分片分配与恢复清单

10.1 分片分配查看

    GET /_cat/allocation?v      

10.2 分片恢复查看

    GET /_cat/recovery?v      

10.3 运行任务查看

    GET /_cat/pending_tasks?v      

10.4 清理缓存

    POST /_cache/clear      

小结

清单没有面面俱到,清单的目的只是梳理知识体系。

而基础知识的习得还是建议通过 官方文档查看即可,前提:熟悉官方文档的目录结构,做到会查、快查,逐步掌握开发实战知识。

相关 [elasticsearch 开发 命令] 推荐:

Elasticsearch 开发实战常用命令清单

- -
Elasticsearch 具有一组丰富的易于理解的 REST API,这些 API  均可如下几种方式通过 HTTP 调用进行访问. 开发实战环节,我推荐使用:kibana Dev-tools. 本文结合多年实战经验和网络资源,梳理出开发环节最重要的命令清单,希望对你有帮助. 1、Elasticsearch REST URL 拆解.

[译]为什么ElasticSearch应用开发者需要了解cluster state

- - SegmentFault 最新的文章
在前面的文章( ES vs Solr)中我们提到, ES构建了Loggly的很多核心功能. 在把这项通用搜索技术用于我们的日志管理系统, 并为超过5000多客户提供准实时服务的过程中, 我们在技术上成长颇多. 按照我们对开源社区的尊重, 在此希望能把我们所学到的知识回馈到社区. 本文将探讨对ES扩展过程中的性能有深远影响的关键概念: cluster state..

Elasticsearch开发人员最佳实战指南

- -
几个月以来,我一直在记录自己开发Elasticsearch应用程序的最佳实践. 本文梳理的内容试图传达Java的某些思想,我相信其同样适用于其他编程语言. 我尝试尽量避免重复教程和Elasticsearch官方文档中已经介绍的内容. 本文梳理的内容都是从线上实践问题和个人总结的经验汇总得来的. 文章从以下几个维度展开讲解:.

[译]elasticsearch mapping

- - an74520的专栏
es的mapping设置很关键,mapping设置不到位可能导致索引重建. 请看下面各个类型介绍^_^. 每一个JSON字段可以被映射到一个特定的核心类型. JSON本身已经为我们提供了一些输入,支持 string,  integer/ long,  float/ double,  boolean, and  null..

Elasticsearch as Database - taowen - SegmentFault

- -
【北京上地】滴滴出行基础平台部招聘 Elasticsearch 与 Mysql binlog databus 开发工程师. 内推简历投递给: [email protected]. 推销Elasticsearch. 时间序列数据库的秘密(1)—— 介绍. 时间序列数据库的秘密(2)——索引.

ElasticSearch 2 的节点调优(ElasticSearch性能)

- - 行业应用 - ITeye博客
一个ElasticSearch集群需要多少个节点很难用一种明确的方式回答,但是,我们可以将问题细化成一下几个,以便帮助我们更好的了解,如何去设计ElasticSearch节点的数目:. 打算建立多少索引,支持多少应用. elasticsearch版本: elasticsearch-2.x. 需要回答的问题远不止以上这些,但是第五个问题往往是容易被我们忽视的,因为单个ElasticSearch集群有能力支持多索引,也就能支持多个不同应用的使用.

Elasticsearch:使用 Elasticsearch 进行语义搜索

- - 掘金 后端
在数字时代,搜索引擎在通过浏览互联网上的大量可用信息来检索数据方面发挥着重要作用. 此方法涉及用户在搜索栏中输入特定术语或短语,期望搜索引擎返回与这些确切关键字匹配的结果. 虽然关键字搜索对于简化信息检索非常有价值,但它也有其局限性. 主要缺点之一在于它对词汇匹配的依赖. 关键字搜索将查询中的每个单词视为独立的实体,通常会导致结果可能与用户的意图不完全一致.

elasticsearch的javaAPI之query

- - CSDN博客云计算推荐文章
elasticsearch的javaAPI之query API. the Search API允许执行一个搜索查询,返回一个与查询匹配的结果(hits). 它可以在跨一个或多个index上执行, 或者一个或多个types. 查询可以使用提供的 query Java API 或filter Java API.

Elasticsearch基础教程

- - 开源软件 - ITeye博客
转自:http://blog.csdn.net/cnweike/article/details/33736429.     Elasticsearch有几个核心概念. 从一开始理解这些概念会对整个学习过程有莫大的帮助.     接近实时(NRT).         Elasticsearch是一个接近实时的搜索平台.

ElasticSearch索引优化

- - 行业应用 - ITeye博客
ES索引的过程到相对Lucene的索引过程多了分布式数据的扩展,而这ES主要是用tranlog进行各节点之间的数据平衡. 所以从上我可以通过索引的settings进行第一优化:. 这两个参数第一是到tranlog数据达到多少条进行平衡,默认为5000,而这个过程相对而言是比较浪费时间和资源的. 所以我们可以将这个值调大一些还是设为-1关闭,进而手动进行tranlog平衡.