使用CURL与ElasticSearch服务进行通信

摘要:
两个Java客户端都使用Elasticsearch的本地传输协议通过端口9300与集群交互。作为一个节点,Java客户端必须具有与Elasticsearch相同的主要版本;否则,他们将无法相互理解。更多Java客户端信息可以在Elastic search Clients中找到。RESTful API与JSONover HTTP所有其他语言都可以使用RESTful API通过端口9200与Elastic search通信。您可以使用您喜爱的web客户端访问Elastic search。事实上,正如您所看到的,您甚至可以使用curl命令与Elasticsearch交互。PROTOCOLhttp、httpsHOSTELASTICsearch集群或localhost中任何节点的主机名表示本地计算机上的节点。PORT ElasticsearchHTTP服务运行的端口号。默认值为9200。

其他高级的语言统一使用RESTful API和JSON,Java开发者可使用Java API。

Java API

如果你正在使用 Java,在代码中你可以使用 Elasticsearch 内置的两个客户端:

节点客户端(Node client)
节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。
传输客户端(Transport client)
轻量级的传输客户端可以将请求发送到远程集群。它本身不加入集群,但是它可以将请求转发到集群中的一个节点上。

两个 Java 客户端都是通过 9300 端口并使用 Elasticsearch 的原生 传输 协议和集群交互。集群中的节点通过端口 9300 彼此通信。如果这个端口没有打开,节点将无法形成一个集群。

Java 客户端作为节点必须和 Elasticsearch 有相同的 主要 版本;否则,它们之间将无法互相理解。

更多的 Java 客户端信息可以在 Elasticsearch Clients 中找到。

RESTful API with JSON over HTTP

所有其他语言可以使用 RESTful API 通过端口 9200 和 Elasticsearch 进行通信,你可以用你最喜爱的 web 客户端访问 Elasticsearch 。事实上,正如你所看到的,你甚至可以使用 curl 命令来和 Elasticsearch 交互。

注:想了解curl可参考文章:https://www.cnblogs.com/cangqiongbingchen/p/10180535.html

Elasticsearch 为以下语言提供了官方客户端--Groovy、JavaScript、.NET、 PHP、 Perl、 Python 和 Ruby—​还有很多社区提供的客户端和插件,所有这些都可以在 Elasticsearch Clients 中找到。

一个 Elasticsearch 请求和任何 HTTP 请求一样由若干相同的部件组成:

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

< > 标记的部件:

VERB

适当的 HTTP 方法谓词 : GETPOSTPUTHEAD 或者 DELETE

PROTOCOL

http 或者 https(如果你在 Elasticsearch 前面有一个 https 代理)

HOST

Elasticsearch 集群中任意节点的主机名,或者用 localhost 代表本地机器上的节点。

PORT

运行 Elasticsearch HTTP 服务的端口号,默认是 9200

PATH

API 的终端路径(例如 _count 将返回集群中文档数量)。Path 可能包含多个组件,例如:_cluster/stats_nodes/stats/jvm

QUERY_STRING

任意可选的查询字符串参数 (例如 ?pretty 将格式化地输出 JSON 返回值,使其更容易阅读)

BODY

一个 JSON 格式的请求体 (如果请求需要的话)

例如,计算集群中文档的数量,我们可以用这个:

curl -XGET 'http://localhost:9200/_count?pretty' -d '
{
    "query": {
        "match_all": {}
    }
}
'

Elasticsearch 返回一个 HTTP 状态码(例如:200 OK)和(除`HEAD`请求)一个 JSON 格式的返回值。前面的 curl 请求将返回一个像下面一样的 JSON 体:

{
    "count" : 0,
    "_shards" : {
        "total" : 5,
        "successful" : 5,
        "failed" : 0
    }
}

在返回结果中没有看到 HTTP 头信息是因为我们没有要求`curl`显示它们。想要看到头信息,需要结合 -i 参数来使用 curl 命令:

curl -i -XGET 'localhost:9200/'

在书中剩余的部分,我们将用缩写格式来展示这些 curl 示例,所谓的缩写格式就是省略请求中所有相同的部分,例如主机名、端口号以及 curl 命令本身。而不是像下面显示的那样用一个完整的请求:

curl -XGET 'localhost:9200/_count?pretty' -d '
{
    "query": {
        "match_all": {}
    }
}'

我们将用缩写格式显示:

GET /_count
{
    "query": {
        "match_all": {}
    }
}

事实上, Sense 控制台 也使用这样相同的格式。如果你正在阅读这本书的在线版本,可以通过点击 Sense 链接视图在 Sense 上打开和运行示例代码。

原文链接:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_talking_to_elasticsearch.html

免责声明:文章转载自《使用CURL与ElasticSearch服务进行通信》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jQuery制作图片旋转效果Unicode文件读取 出现隐藏字符 (大坑)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

实战IM(即时通讯系统)开发——剖析.NET网络通信、音频、移动平台IM及服务器端编程

 课程学习地址:http://www.ibeifeng.com/goods.php?id=174 课程试看连接:http://www.ibeifeng.com/goods.php?id=174&ct=video 本系统是国内首部讲述.NET网络通信、移动开发、服务器端编程领域的课程,通过本课程的学习您可以领略到.NET在服务器端各种优点。 一、I...

Kong 入门简介

一、Kong安装 1.创建网络 sudo docker network create kong-net 2.创建数据库(采用postgres) sudo docker run -d --name kong-database --network=kong-net -p 5432:5432 -e "POSTGRES_USER=kong" -e "PO...

Linux 系统编程 学习:3-进程间通信1:Unix IPC(2)信号

背景 上一讲我们介绍了Unix IPC中的2种管道。 回顾一下上一讲的介绍,IPC的方式通常有: Unix IPC包括:管道(pipe)、命名管道(FIFO)与信号(Signal) System V IPC:消息队列、信号量、共享内存 Socket(支持不同主机上的两个进程IPC) 我们在这一讲介绍Unix IPC,中有关信号(Signal)的处理。...

简单的多线程通信实例(用委托事件实现)

 1using System; 2using System.Threading; 3 4namespace ifan 5{ 6    //自定义委托声明 7    public delegate void childExitDelegate(object sender, ChildExitEventArgs e); 8 9    public class...

websocket通信 h5flash 兼容ie

H5新功能websocket不用说了,现代浏览器都支持,拿起来就可以用。接下来主要分享下socket通信兼容ie: 方案:flash socket; 前段代码:https://github.com/gimite/web-socket-js; 主要用到里面的3个文件:swfobject.js;web_socket.js;WebSocketMain.swf/W...

docker-compose部署EFK

参考 docker_compose_efk elasticsearch、kibana、filebeathttps://github.com/haimait/docker_compose_efk docker-compose 一键部署elasticsearch、kibana、filebeathttps://github.com/ExtraShen/docke...