ES架构
1 | Gateway层: |
** ES支持的客户端连接方式 **
1、REST API ,端口 9200
这种连接方式对应于架构图中的RESTful style API这一层,这种客户端的连接方式是RESTful风格的,使用http的方式进行连接
2、Transport 连接 端口 9300
这种连接方式对应于架构图中的Transport这一层,这种客户端连接方式是直接连接ES的节点,使用TCP的方式进行连接
3、多种编程语言客户端
1 | Java REST Client [7.4] — other versions |
Java REST Client
** ES提供了两个JAVA REST client 版本**
Java Low Level REST Client: 低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。兼容所有ES版本。
Java High Level REST Client: 高级别的REST客户端,基于低级别的REST客户端,增加了编组请求JSON串、解析响应JSON串等相关api。使用的版本需要保持和ES服务端的版本一致,否则会有版本问题。
** Java Low Level REST Client **
maven 引入、使用介绍: https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-low.html
** Java High Level REST Client **
从6.0.0开始加入的,目的是以java面向对象的方式来进行请求、响应处理。每个API 支持 同步/异步 两种方式,同步方法直接返回一个结果对象。异步的方法以async为后缀,通过listener参数来通知结果。
高级java REST 客户端依赖Elasticsearch core project
兼容性说明:依赖 java1.8 和 Elasticsearch core project,请使用与服务端ES版本一致的客户端版本
** Java High Level REST Client maven 集成**
1 | <dependency> |
** Java High Level REST Client 初始化**
1 | RestHighLevelClient client = new RestHighLevelClient( |
给定集群的多个节点地址,将客户端负载均衡地向这个节点地址集发请求,API及用法示例,请参考:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-supported-apis.html
Java High Level REST Client 使用示例
引入包
maven工程里面引入和ES服务端版本一样的Java客户端
1 | <dependency> |
初始化客户端
给定集群的多个节点地址,将客户端负载均衡地向这个节点地址集发请求。
1 | public class InitDemo { |
Create index 创建索引
1 | public class CreateIndexDemo { |
index document
索引文档,即往索引里面放入文档数据.类似于数据库里面向表里面插入一行数据,一行数据就是一个文档。
1 | public class IndexDocumentDemo { |
获取文档数据
1 | public class GetDocumentDemo { |
批量索引文档
1 | public class BulkDemo { |
搜索数据
1 | public class SearchDemo { |
highlight 高亮
1 | public class HighlightDemo { |
suggest 查询建议
1 | public class SuggestDemo { |
aggregation 聚合分析
1 | public class AggregationDemo { |
各种查询对应的QueryBuilder:
各种聚合对应的AggregationBuilder: