ElasticSearch : High Rest Api 使用
pom文件:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.2.0</version>
</dependency>
创建client(client可以关闭, 建议在停止应用前调用close() 方法):
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("10.8.3.55", 9200, "http")));
// 1. 检测索引是否存在(所有和索引有关的操作全部推荐用org.elasticsearch.client.indices包下的类)
GetIndexRequest request = new GetIndexRequest("twitter");
boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
// 2. 创建索引
CreateIndexRequest request = new CreateIndexRequest("twitter");
request.settings(Settings.builder()
.put("index.number_of_shards", 1)
.put("index.number_of_replicas", 1)
); // 第一种
request.mapping("{\"properties\":{\"msg\":{\"type\":\"text\"}}}", XContentType.JSON); // 第二种
Map<String, Object> properties = new HashMap<>();// properties Map<String, Object> message = new HashMap<>();
message.put("type", "text");
properties.put("message", message);// 添加映射
Map<String, Object> username = new HashMap<>();
username.put("type", "keyword");
properties.put("username", username);// 添加映射 Map<String, Object> mapping = new HashMap<>();
mapping.put("properties", properties);
request.mapping(mapping); CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
System.out.println(createIndexResponse.index());
// 3. 增加文档(如果类注释推荐使用org.elasticsearch.client.Requests来创建类,最好用他推荐的方式)
IndexRequest request = Requests.indexRequest("twitter");
request.id("1");// 指定ID
request.source("message", "消息内容...abc",
"username", "jack 杰克");// 支持多种方式
IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
System.out.println(indexResponse);
// 4. 修改文档
UpdateRequest request = new UpdateRequest("twitter", "1");
request.doc("message", "修改之后的消息内容...abc",
"username", "修改之后的jack 杰克");// 支持多种方式
UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
System.out.println(response);
// 5. Bulk
BulkRequest request = new BulkRequest();
request.add(new DeleteRequest("twitter", "1"));
request.add(new UpdateRequest("twitter", "2")
.doc(XContentType.JSON,"username", "jack==="));
request.add(new IndexRequest("twitter").id("3")
.source(XContentType.JSON,"username", "jack222")); BulkResponse response = client.bulk(request, RequestOptions.DEFAULT);
System.out.println(response.hasFailures());
// 6. 根据ID获取文档
GetRequest request = Requests.getRequest("twitter").id("2");
GetResponse response = client.get(request, RequestOptions.DEFAULT);
System.out.println(response.getSourceAsString());
// 7. Search
SearchRequest request = new SearchRequest("twitter");
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(QueryBuilders.matchAllQuery());
request.source(builder);
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
Iterator<SearchHit> hits = response.getHits().iterator();
ObjectMapper mapper = new ObjectMapper();
List<Person> personList = new ArrayList<>();
while (hits.hasNext()) {
personList.add(mapper.readValue(hits.next().getSourceAsString(), Person.class));
}
System.out.println(personList);
查询聚合DSL语句构建使用 SearchSourceBuilder:
// 样例 伪代码: // SearchSourceBuilder builder = new SearchSourceBuilder();
// String[] include = {"timeStamp",
// "msgBody.boxList.boxStatus.boxCurrent",
// "msgBody.boxList.batInfo.batSN",
// "msgBody.boxList.batStatus.batCurrent",
// "msgBody.boxList.batStatus.batVoltage",
// "msgBody.boxList.batStatus.batRSOC"};
// builder.query(QueryBuilders.boolQuery()
//// .filter(QueryBuilders.termQuery("msgBody.boxList.batInfo.batSN", "BAA2118122200104"))
// .filter(QueryBuilders.rangeQuery("timeStamp").gte(1557729000).lte(1557741600)))
// .sort("timeStamp", SortOrder.ASC)
// .from(0)
// .size(100).fetchSource(include, null);
//// builder.aggregation(AggregationBuilders.terms("data_count").field("deviceInfo.deviceSN")).size(0);
High Rest client使用参考 https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html
聚合结果分析参考: https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_bucket_aggregations.html
获取聚合必须要指定相关的类 如 Terms:
Terms data = response.getAggregations().get("data_count");
System.out.println(data.getBuckets().get(0).getKey());
System.out.println(data.getBuckets().get(0).getDocCount());
System.out.println(response.toString());
ElasticSearch : High Rest Api 使用的更多相关文章
- elasticsearch中的API
elasticsearch中的API es中的API按照大类分为下面几种: 文档API: 提供对文档的增删改查操作 搜索API: 提供对文档进行某个字段的查询 索引API: 提供对索引进行操作 查看A ...
- Elasticsearch利用cat api快速查看集群状态、内存、磁盘使用情况
使用场景 当Elasticsearch集群中有节点挂掉,我们可以去查看集群的日志信息查找错误,不过在查找错误日志之前,我们可以通过elasticsearch的cat api简单判断下各个节点的状态,包 ...
- Elasticsearch for python API模块化封装
Elasticsearch for python API模块化封装 模块的具体功能 检测Elasticsearch节点是否畅通 查询Elasticsearch节点健康状态 查询包含的关键字的日志(展示 ...
- Springboot整合elasticSearch的官方API实例
前言:在上一篇博客中,我介绍了从零开始安装ElasticSearch,es是可以理解为一个操作数据的中间件,可以把它作为数据的存储仓库来对待,它具备强大的吞吐能力和计算能力,其基于Lucene服务器开 ...
- Elasticsearch中JAVA API的使用
1.Elasticsearch中Java API的简介 Elasticsearch 的Java API 提供了非常便捷的方法来索引和查询数据等. 通过添加jar包,不需要编写HTTP层的代码就可以开始 ...
- elasticsearch【cat API,系统数据】指令汇总
本博文讲述的ES获取系统数据的API是基于Elasticsearch 2.4.1版本的. 0. overview a. 下面将要介绍的所有的指令,都支持一个查询参数v(verbose),用来显示详细的 ...
- Elasticsearch使用REST API实现全文检索
通过rest api添加检索数据,阅读官方文档可以发现,elasticsearch支持动态映射,但是其中有不少问题,且听慢慢详解. 本文主要讲述三点内容: 1 Elasticsearch常用的rest ...
- 【重新分配分片】Elasticsearch通过reroute api重新分配分片
elasticsearch可以通过reroute api来手动进行索引分片的分配. 不过要想完全手动,必须先把cluster.routing.allocation.disable_allocation ...
- ElasticSearch 2 (4) - API Convention
ElasticSearch 2.1.1 (4) - API Convention The elasticsearch REST APIs are exposed using JSON over HTT ...
- elasticsearch 6.0java api的使用
elasticsearch 6.0 中java api的使用 1:使用java api创建elasticsearch客户端 package com.search.elasticsearch; impo ...
随机推荐
- Hive:数据倾斜
数据倾斜问题 数据倾斜是大数据领域绕不开的拦路虎,当你所需处理的数据量到达了上亿甚至是千亿条的时候,数据倾斜将是横在你面前一道巨大的坎.很可能有几周甚至几月都要头疼于数据倾斜导致的各类诡异的问题. 数 ...
- spring boot的gradle整合日志
1.引入包configurations { providedRuntime // remove default logger all*.exclude group: 'org.springframew ...
- Django 练习班级管理系统一
创建项目 user_manager 和 app为 app01 models.py 为 from django.db import models # Create your models here. c ...
- Asp.Net六大内置对象
前面学习mvc管道处理模型的时候,我们晓的HttpContext是贯穿全文的一个对象,在HttpRuntime产生,现在我们所谓的Asp.Net六大内置对象,其实就是HttpContext的属性.具体 ...
- Centos7 安装使用virtualenvwrapper
退出所有的虚拟环境,在物理环境下安装 1.下载安装virtualenvwrapper pip3 install virtualenvwrapper 2.查看python3的文件和virtualenvw ...
- 201871010125 王玉江《面向对象程序设计(java)》第十三周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- Java高级——泛型
本文主要讲述泛型的使用 1.在集合中的使用 2.自定义泛型类.泛型接口.泛型方法 3.泛型与继承的关系 4.通配符 由于第一点和第二点在平常的编码工作中已熟练,本文重点讲述后面两点. 直接show t ...
- C# 集合根据属性去重筛选
1.单个属性去重筛选 //去重筛选 var ChgDtlVoList = datas.Where((x, i) => datas.FindIndex(z => z.ChgId == x.C ...
- workerman docker 运行试用
看到别人项目使用了workerman 作为webserver ,看了下介绍发现此框架还是挺强大的,比较喜欢使用 docker运行软件,所以基于php 7.3 的基础镜像简单使用下 环境准备 项目使用了 ...
- Linux性能优化实战学习笔记:第二十七讲
一.案例环境描述 1.环境准备 2CPU,4GB内存 预先安装docker sysstat工具 2.温馨提示 案例中 Python 应用的核心逻辑比较简单,你可能一眼就能看出问题,但实际生产环境中的源 ...