导言

昨天的文章,讲述了Elasticsearch是什么?以及如何安装?还有还教了安装发送请求的sence,今天则是说明交互的形式介绍。

你怎么跟Elasticsearch交互取决于你是否使用的是Java

Java API

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

节点端

节点端作为一个非数据节点连接本地集群。换句话说,它并不保存任何数据,但是它知道什么数据存储在集群的哪个结点,并且可以将请求直接发送到正确的节点中。

运输端-(传输端)

可以使用轻量级的运输端将请求发送到远程集群。但它自身并不加入集群,而是简单的将请求发送到集群的一个节点。

Java客户跟集群使用本机Elasticsearch传输协议在9300端口进行通信。集群中的节点还在端口9300上相互通信。如果这个端口不开放,你将无法形成一个集群节点。

小提示

Java客户机作为节点必须来源于相同主版本的Elasticsearch;否则,他们相互间可能无法理解彼此。

RESTful API With JSON Over Http

其他语言与Elasticsearch通信是用你最喜欢的web客户端在端口9200上使用基于RESTful的API来进行。事实上,正如你所见,你甚至可以跟Elasticsearch使用curl命令的命令行。

请注意Elasticsearch为几种语言(Groovy、JavaScript、.NET、PHP、Perl、Python和ruby)提供了官方客户端,有许多社区提供版本的客户端和集成环境,所有这些都可以在Elasticsearch Clients中看见。

后面阶段若有时间,会介绍一下关于Java API调用Elasticsearch。目前只是带入大家入门Elasticsearch,学会基本语法。

任何HTTP请求请求Elasticsearch均包含下列相同的部分:

这里写图片描述

上面的部分标记< >的参数解释如下:

这里写图片描述

示例

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

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
    }
}

比如: (将curl请求复制到sence)

这里写图片描述

又比如

这里写图片描述

我们没有看到响应的HTTP头,因为我们没有通过curl来显示它们。为了看到头部信息,使用curl命令和- i选项:

curl -i -XGET 'localhost:9200/'

打开cmd,输入上述的命令,可以看见:

这里写图片描述

下面,将介绍这些curl的例子使用速记格式即将在每一个请求都是相同的部分,如主机名和端口,和curl命令本身都忽略掉。而不是显示一个完整的请求,比如:

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

事实上, 使用sence控制台,你会发现这是相同的格式,。

结语

本篇文章,介绍了java可以使用两种方式进行请求,对http进行curl的请求,进行了示范,给定了一个形式模型,希望各位后面阶段进行请求的时候,多使用sence进行请求。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐