ElasticSearch实战-RestAPI

  • 基于ElasticSearch版本8.5.0
  • 本文描述的集群部署方式,只用以测试和学习使用,不能作为生产环境
  • 本文描述的集群方式基于docker
  • ElasticSearch文档
  • 本篇文章中的接口执行示例,如无特殊说明,均是在Kibana的Dev Tools的Console中执行的。

ElasticSearch暴露了Rest风格的API,用以对ElasticSearch进行配置、控制功能、查询数据等,所有的API都是基于HTTP协议对外进行暴露的。

一、使用约定

ContentType

包含request body的请求,必须使用使用Content-Type请求头,支持的类型包括JSONYAMLCBORSMILE。对于批量执行或者批量查询的接口,支持NDJSONJSONSMILE,使用其他的类型,会报错。

traceparent的请求头

支持traceparent的请求头,用以追踪接口的执行,请求的规范为official W3C trace context spec。包含该请求头,elastic search会在服务日志、慢查询日志中打印出trace信息。便于问题的定位。

GET or POST方法

ElasticSearch有很多GET方法支持request body(尤其是搜索接口),但是很多HTTP client不支持GET方法包含请求体,因此这些方法都支持以POST方法进行请求。

二、请求选项

对返回结果进行格式化

?pretty=true&format=yamlpretty=true指定对相应结果进行格式化,format指定对结果格式化的格式。例如

# 不包含格式化信息
GET _cat/indices?v=true
health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   get-together-group              pmDUpYvkRiy-T_4jV4xDwA   1   1          1            0     18.1kb            9kb
green  open   .monitoring-es-7-2022.11.11     i74ojFpDQ9COGpNSkY_Tdw   1   1      30006        74984     45.9mb         22.9mb

#包含格式化参数
GET _cat/indices?v=true&pretty=true&format=yaml
---
- health: "green"
  status: "open"
  index: "get-together-group"
  uuid: "pmDUpYvkRiy-T_4jV4xDwA"
  pri: "1"
  rep: "1"
  docs.count: "1"
  docs.deleted: "0"
  store.size: "18.1kb"
  pri.store.size: "9kb"
- health: "green"
  status: "open"
  index: ".monitoring-es-7-2022.11.11"
  uuid: "i74ojFpDQ9COGpNSkY_Tdw"
  pri: "1"
  rep: "1"
  docs.count: "30006"
  docs.deleted: "74984"
  store.size: "45.9mb"
  pri.store.size: "22.9mb"

统计结果可读性控制

对于一些统计结果,ElasticSearch会做人工可读性的转换,例如:exist_time: 1hsize:1kb等。如果相应结果用以做监控或者需要对结果进行排序,可以使用?human=false的参数,避免ElasticSearch对结果进行可读性的转换。

控制返回的字段

filter_path控制返回结果中需要返回哪些字段,通过该参数,可以去掉响应结果中无用的参数,节省传输大小。例如GET /_search?q=kimchy&filter_path=took,hits.hits._id,hits.hits._score。各个筛选的字段间用逗号分割,支持*通配符。

三、CAT API

以适合在终端上进行展示的格式输出查询结果,CAT APIs包含了很多查询集群状态的接口,本小节挑选一些比较有用的进行介绍。

通用参数

v=true展示详细信息,输出结果中带上标题。
help 展示接口的帮助信息,主要是展示接口返回的标题的说明。
h=ip,port指定输出结果包含哪些列。
bytes=b time=s size=k指定返回结果的单位,支持的单位byte unitssize unitstime units
s=order:desc 按照指定列进行排序,asc 升序,desc降序。

1. health接口

接口: /_cat/health
返回集群健康状态,返回包括如下字段

epoch                 | t,time                                   | seconds since 1970-01-01 00:00:00  
timestamp             | ts,hms,hhmmss                            | time in HH:MM:SS                   
cluster               | cl                                       | cluster name                       
status                | st                                       | health status                      
node.total            | nt,nodeTotal                             | total number of nodes              
node.data             | nd,nodeData                              | number of nodes that can store data
shards                | t,sh,shards.total,shardsTotal            | total number of shards             
pri                   | p,shards.primary,shardsPrimary           | number of primary shards           
relo                  | r,shards.relocating,shardsRelocating     | number of relocating nodes         
init                  | i,shards.initializing,shardsInitializing | number of initializing nodes       
unassign              | u,shards.unassigned,shardsUnassigned     | number of unassigned shards        
pending_tasks         | pt,pendingTasks                          | number of pending tasks            
max_task_wait_time    | mtwt,maxTaskWaitTime                     | wait time of longest task pending  
active_shards_percent | asp,activeShardsPercent                  | active number of shards in percent 

执行示例

GET /_cat/health?v=true

epoch      timestamp cluster        status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1668343664 12:47:44  docker-cluster green           3         3     52  26    0    0        0             0                  -                100.0%
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
elasticsearch-rest-client-6.4.3.jar 一直冲突可能有几个原因。 首先,可能是由于版本兼容性问题导致冲突。elasticsearch-rest-client-6.4.3.jar 是 ElasticsearchREST 客户端,如果您的 Elasticsearch 版本与此客户端不兼容,可能会导致冲突。您可以尝试更新 Elasticsearch 或使用与您当前 Elasticsearch 版本兼容的 REST 客户端。 其次,冲突可能是由于您的项目中存在多个版本的 elasticsearch-rest-client-6.4.3.jar。当存在多个相同的 JAR 文件但版本不同的情况下,可能会发生冲突。您可以检查项目的依赖关系,确保只引入一个版本的 elasticsearch-rest-client-6.4.3.jar。 另外,冲突可能是由于其他依赖项与 elasticsearch-rest-client-6.4.3.jar 冲突。在一些情况下,某些依赖项可能需要特定版本的 JAR 文件,并且与 elasticsearch-rest-client-6.4.3.jar 的版本冲突。您可以检查项目的所有依赖项,并确保它们与 elasticsearch-rest-client-6.4.3.jar 的版本兼容。 最后,冲突可能是由于项目中存在其他冲突的依赖项引起的。当项目中存在多个依赖项,它们之间存在冲突时,可能会导致冲突。您可以使用 Maven 或 Gradle 等构建工具来分析项目的依赖关系,并解决任何冲突。 总之,elasticsearch-rest-client-6.4.3.jar 一直冲突可能是由于版本兼容性问题、多个 JAR 文件的存在、与其他依赖项的冲突或其他原因引起的。您可以通过检查兼容性、解决版本冲突、检查依赖项并解决冲突等方式来解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值