Elasticsearch API
boolean model
1 | GET /product/_search |
JAVA API
Transport Client:TransportClient不推荐使用,而推荐使用Java High Level REST Client,并将在Elasticsearch 8.0中删除。
Java Low Level REST Client:低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串。兼容所有ES版本
Java High Level REST Client:高级别的REST客户端,基于低级别的REST客户端,增加了编组请求JSON串、解析响应JSON串等相关api。使用的版本需要保持和ES服务端的版本一致,否则会有版本问题。
1 | <dependency> |
Transport Client
1 | public static void main(String[] args) { |
1 | private void create(TransportClient client) { |
1 | //查询一条数据 |
1 | //批量查询 |
1 | //增量更新 |
1 | //删除数据 |
1 | //多条件查询 |
1 | //统计每个月份的tags中每个词项term的平均价格 |
1 | //查询结果 |
1 | //通过Java代码实现上面案例的聚合查询 |
High Level REST Client
1 | 常见步骤: |
创建连接
1 | //使用 RestHighLevelClient |
创建索引
1 | public void createIndex(RestHighLevelClient client) { |
查询索引
1 | public void getIndex(RestHighLevelClient client) { |
删除索引
1 | public void delIndex(RestHighLevelClient client) { |
插入数据
1 | public void insertData(RestHighLevelClient client) { |
批量插入
1 | public void batchInsertData(RestHighLevelClient client) { |
查询数据
1 | //通过ID查询数据 |
删除数据
1 | //通过ID删除数据 |
批量查询
1 | public void multiGetById(RestHighLevelClient client) throws IOException { |
查询更新
1 | //更新查询 |
分页查询
1 | public ResultDto carInfo(String keyword,Integer from,Integer size) { |
Scroll查询
1 | public ResultDto scroll(String scrollId) { |
批量操作
1 | public ResultDto bulk() { |
搜索模板
1 | public ResultDto templateSearch() { |
模糊查询
1 | public SearchHit[] fuzzy(String name) { |
多语句查询
1 | public ResultDto multiSearch() { |
Bool查询
1 | public ResultDto boolSearch() { |
Sniffer 嗅探器
概念:从运行中的Elasticsearch集群自动发现节点并将它们设置为现有RestClient实例(low实例)。
版本:从ES 2.X开始及更高版本支持。
1 | <dependency> |
1 | 用法: |
1 | public class ESClient { |
1 | public void snifferTest() { |
假设有5台机器,IP分别是【9200 - 9204】最后嗅探造成的输出结果是:
1 | 先输出: |
嗅探器它能够给我们监控动态更新集群的节点数量,避免了程序因节点过多或增加/减少节点造成的切换问题。
最后更新: 2020年12月16日 10:32