Skip to main content

Elasticsearch API

Elasticsearch REST APIs 使用 HTTP 作为传输协议,遵循以下标准:

  • 使用 JSON 作为数据交换格式。
  • 使用标准HTTP响应CODE。
  • 所有的语言都可以使用 RESTful API,通过 9200 端口的与云端 Elasticsearch 进行通信。
  • RESTful API调用是无状态的,您发出的每一个请求都与其他请求无关。

API 调试

  • 本手册中的所有示例代码都可以直接粘贴到 Kinana 的 开发工具 运行,这是最便捷的调试方式。
  • 若缺少环境 🍋 获取一个在线免费集群 ,已预装好 Elasticsearch / Kibana 。

Content-Type

使用程序交互时,必须使用 Content-Type Header 指定在请求正文中发送的内容类型,大多数API支持JSON、YAML、CBOR。

curl -H 'Content-Type: application/json' https://router.nasuyun.com:9200/...

bulkmulti-search APIs 支持NDJSON、JSON;其他类型将导致错误响应。

curl -H 'Content-Type: application/x-ndjson' -XPOST https://router.nasuyun.com:9200/_bulk ...

Elasticsearch 的请求和响应仅支持UTF-8编码的JSON,任何其他编码类型将被忽略。

安全与加密

Nasu Elasticsearch Serverless 采用基于 HTTPS and Basic Authentication 的身份验证,例如:

  • 命令行方式
curl -XPOST 'https://router.nasuyun.com:9200/logs/_doc' -H 'Content-Type: application/json' \
-u your_username:your_password \
-d '
{
"timestamp": "2018-01-24 12:34:56",
"message": "User logged in",
"user_id": 4,
"admin": false
}'
  • java方式

POM依赖

<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.8.23</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.8.23</version>
</dependency>
private RestHighLevelClient client() {
Header[] headers = new Header[]{new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json")};
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(your_username, your_password));
RestClientBuilder builder = RestClient.builder(HttpHost.create(server))
.setDefaultHeaders(headers)
.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
return new RestHighLevelClient(builder);
}