ElasticSearch 客户端API
ElasticSearch提供有多种语言的客户端API操作和访问文档,支持Java,JavaScrpit,Perl,Ruby等。不过其本质上都是REST接口,通过HTTP协议进行文档数据的操作。同时ElasticSearch还内置Painless脚本语言,可在API中直接使用。
1.REST接口
ElasticSearch提供的所有接口都以下划线“_”开头,在ElasticSearch中,可以使用四种HTTP方法请求索引(GET,PUT,DELETE,HEAD)。
PUT 用于创建索引
GET 用于查看索引
DELETE 用于删除索引
HEAD 用于检验索引存在性,存在返回200状态码,不存在返回404状态码
REST接口一般都对应一个资源,在ElasticSearch在操作索引时可以在URI中指定多个,也可以使用通配符匹配多个索引,也可以使用_all代表所有索引。如:
GET all/_search GET */_search
2.Painless脚本
ElasticSearch中许多接口都支持脚本做动态运算,其中Painless是ElasticSearch支持最好的一种脚本语言。在5.0版本后提供,语法上于Java语言基本相同,最终会被编译为字节码运行在JVM上。
3.Java API
ElasticSearch官方提供的Java客户端API底层也是基于HttpClient框架,在此基础上进行了封装。分为低级REST客户端(Low Level REST Client)和高级REST客户端(High Level REST Client)两种。
低级REST客户端(Low Level REST Client)
使用RestClient对象连接ElasticSearch,在创建RestClient对象时可以指定多个节点地址以实现负载均衡,不会对请求进行编码和响应解码,在使用结束后需要调用close方法释放RestClient占用的资源,所有Elasticsearch版本兼容。
maven依赖:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>${elasticsearch.client.version}</version>
</dependency>
高级REST客户端(High Level REST Client)
高级REST客户端建立在低级REST客户端基础上,将对ElasticSearch访问的接口都封装成对象和方法,更加面向对象。使用的连接ElasticSearch的对象是RestHighLeveClient,在使用结束后需要调用close方法释放资源。
maven依赖:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>${elasticsearch.client.version}</version>
</dependency>
推荐阅读