初学ElasticSearch系列之三 ElasticSearch API

与 Elasticsearch 通信

如何与 Elasticsearch 通信要取决于你是否使用 JAVA。

Java API

  1. 如果你使用的是 JAVA,Elasticsearch 内置了两个客户端:
  • 节点客户端
    节点客户端以一个 无数据节点 的身份加入了一个集群。
    换句话说,它自身是没有任何数据的,但是他知道什么数据在集群中的哪一个节点上,然后就可以请求转发到正确的节点上并进行连接。
  • 传输客户端
    更加轻量的传输客户端可以被用来向远程集群发送请求。
    他并不加入集群本身,而是把请求转发到集群中的节点。
  1. 这两个客户端都使用 Elasticsearch 的 传输协议,通过9300端口与 java 客户端进行通信。
  2. 集群中的各个节点也是通过9300端口进行通信。
  3. 如果这个端口被禁止了,那么你的节点们将不能组成一个集群。

TIPs

Java 的客户端的版本号必须要与 Elasticsearch 节点所用的版本号一样,不然他们之间可能无法识别。

通过 HTTP 向 RESTful API 传送 json

其他的语言可以通过9200端口与 Elasticsearch 的 RESTful API 进行通信。
事实上,如你所见,你甚至可以使用行命令 curl 来与 Elasticsearch 通信。

  1. 向 Elasticsearch 发出的请求和其他所有的 HTTP 请求的组成部分是一致的。
    例如:
    计算集群中文件的数量,我们就可以使用:
    (1) (2) (3)(4)
    curl -i -XGET 'http://localhost:9200/_count?pretty' -d '
    { (5)
    "query": {
    "match_all": {}
    }
    }
    '
    (1)相应的 HTTP 请求方法 或者 变量 : GET, POST, PUT, HEAD 或者 DELETE。
    (2)集群中任意一个节点的访问协议、主机名以及端口。
    (3)请求的路径。
    (4)任意一个查询后再加上 ?pretty 就可以生成 更加美观 的JSON反馈,以增强可读性。
    (5)一个 JSON 编码的请求主体(如果需要的话)。

Elasticsearch 将会返回一个 HTTP 状态码类似于 '200 OK',以及一个 JSON 格式的主体(除了单纯的 'HEAD' 请求),上面的请求会得到下方的 JSON 主体:

{
  "count" : 0,
  "_shards" : {
    "total" : 0,
    "successful" : 0,
    "skipped" : 0,
    "failed" : 0
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,169评论 19 139
  • 简介 Elasticsearch是一个高可扩展的开源全文搜索和分析引擎,它允许存储、搜索和分析大量的数据,并且这个...
    零度沸腾_yjz阅读 5,546评论 0 8
  • 这部片是通过改编迪士尼的《泰山》而改编拍成电影的。但是我没有看过原著,直接看的是这部片—《泰山归来·险战丛林》,所...
    沐晓沐阅读 944评论 0 0
  • 梦,虚幻缥缈,任我如何伸手触摸,始终触不到抓不着。睁开眼,一切回到现实回到梦开始的原点。我那仅有的小小种子,是否曾...
    mystical神秘的阅读 341评论 0 2
  • I feel anxious every month for no reason.until talking wi...
    Dougigi阅读 469评论 2 2