ELK-RESTful API

ElasticSearch采用REST API,所有的操作都可通过HTTP API完成,例如增删改查、别名配置等。

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。

无论在开源还是专有领域, Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 

但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到 你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如 何工作的。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,
但是 它的目的是通过简单的 RESTful API 来隐藏Lucene的复杂性,从而让全文搜索变得简。

使用REST Client交互

客户端访问仅支持HTTP / TCP方式,建议您采用Elasticsearch官方提供的Java REST Client。

使用Java API交互

Elasticsearch为Java用户提供了内置客户端。关于Java API的更多信息,请查看官方Java API文档。

传输客户端(Transport client)

传输客户端能够发送请求到远程集群,它自己不加入集群,只是简单转发请求给集群中的节点。

传输客户端通过9300端口与集群交互,使用Elasticsearch传输协议(Elasticsearch Transport Protocol)。

集群中的节点之间也通过9300端口进行通信。如果此端口未开放,您的节点将不能组成集群。

说明 Java客户端所在的Elasticsearch版本必须与集群中其他节点一致,否则它们可能无法相互识别。

RESTful API(HTTP)

其他所有程序语言都可以使用RESTful API,通过9200端口与Elasticsearch进行通信。可使用您喜欢的Web客户端,或通过curl命令与Elasticsearch通信。

说明 Elasticsearch官方提供了多种程序语言的客户端,例如Groovy、Javascript、.NET、PHP、Perl、Python以及Ruby。

还有很多由社区提供的客户端和插件,您可以在官方文档中获取。

curl请求组成(HTTP)

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

VERB:HTTP方法,包括GET、POST、PUT、HEAD、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格式的请求主体(如果请求需要的话)。

示例

1.统计Elasticserach集群中文档数命令:

curl -XGET http://localhost:9200/_count?pretty

返回:

{
  "count" : 86547,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章