Elasticsearch 7.6.2 API操作
**本文基于elasticsearch 7.6.2 的API进行测试,话不多说,直接上代码!!!**
/*** es 7.6.x高级API测试*/
@SpringBootTest
class SpringbootEsApiApplicationTests {@Autowired@Qualifier("restHighLevelClient") //使用这种方式可以简写为clientprivate RestHighLevelClient client;/*** 测试创建索引* @throws IOException*/@Testvoid testCreateIndex() throws IOException {//1.创建索引请求CreateIndexRequest request = new CreateIndexRequest("es_book");//2.客户端执行请求 IndicesClientCreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);System.out.println(createIndexResponse);}/*** 测试获取索引,只能判断是否存在* @throws IOException*/@Testvoid getIndexExist() throws IOException {GetIndexRequest request = new GetIndexRequest("es_book2");boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);System.out.println(exists);}/*** 测试删除索引* @throws IOException*/@Testvoid deleteIndex() throws IOException {DeleteIndexRequest request = new DeleteIndexRequest("es_book");AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);System.out.println(delete.isAcknowledged());}/*** 测试添加文档* @throws IOException*/@Testvoid testAddDocument() throws IOException {//创建对象Book book = new Book("es书", 15.0)//创建请求IndexRequest request = new IndexRequest("es_book");//创建规则 PUT /es_book/_doc/1request.id("1");request.timeout("1s");//request.timeout(TimeValue.timeValueSeconds(1));String jsonStr = JSON.toJSONString(book);System.out.println(jsonStr);//将数据放入请求json(对象转换成json)request.source(JSON.toJSONString(book), XContentType.JSON);//客户端发送请求,获取响应的结果IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);System.out.println(indexResponse.toString());System.out.println(indexResponse.status()); //CREATED}/*** 判断是否存在文档 GET /es_book/_doc/1*/@Testvoid testDocumentIsExist() throws IOException {GetRequest request = new GetRequest("es_book", "1");//不获取request的上下文request.fetchSourceContext(FetchSourceContext.DO_NOT_FETCH_SOURCE);request.storedFields("_none_");boolean exists = client.exists(request, RequestOptions.DEFAULT);System.out.println(exists);}/*** 获取文档信息* @throws Exception*/@Testvoid testGetDocument() throws Exception {GetRequest request = new GetRequest("es_book", "1");GetResponse getResponse = client.get(request, RequestOptions.DEFAULT);System.out.println(getResponse.getSourceAsString());}/*** 测试更新文档* @throws IOException*/@Testvoid testUpdateDocument() throws IOException {UpdateRequest request = new UpdateRequest("es_book", "1");request.timeout("1s");Book book = new Book("es书", 18.0);request.doc(JSON.toJSONString(book), XContentType.JSON);UpdateResponse updateResponse = client.update(request, RequestOptions.DEFAULT);System.out.println(updateResponse.status());}/*** 测试删除文档* @throws IOException*/@Testvoid testDeleteDocument() throws IOException {DeleteRequest deleteRequest = new DeleteRequest("es_book", "1");deleteRequest.timeout("1s");DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);System.out.println(deleteResponse.status());}/*** 批量插入数据* @throws IOException*/@Testvoid testBulkRequest() throws IOException {BulkRequest bulkRequest = new BulkRequest();bulkRequest.timeout("10s");List<User> userList = new ArrayList<>();userList.add(new User("德玛西亚", 1));userList.add(new User("诺克萨斯", 2));userList.add(new User("德邦总管", 3));userList.add(new User("虚空行者", 4));userList.add(new User("发条魔灵", 5));//批处理请求for (int i = 0; i < userList.size(); i++) {bulkRequest.add(new IndexRequest("user_index").id("" + (i + 1)) //不设置id,会生成随机id.source(JSON.toJSONString(userList.get(i)), XContentType.JSON));}BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);System.out.println(bulkResponse.hasFailures());}/*** 条件查询* @throws IOException*/@Testvoid testSearchRequest() throws IOException {SearchRequest searchRequest = new SearchRequest("es_book");//构建搜索条件SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();//查询条件,使用QueryBuilders来实现//QueryBuilders.termQuery 精确匹配//QueryBuilders.matchAllQuery() 查询匹配所有//不能使用"发条魔灵"精确匹配,因为被分词器拆分成了一个个字TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "魔");
// MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();searchSourceBuilder.query(termQueryBuilder);searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));//将构建器放入请求searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);SearchHits hits = searchResponse.getHits();System.out.println(JSON.toJSONString(hits));for (SearchHit hit : hits.getHits()) {
// System.out.println(hit.getSourceAsMap());System.out.println(hit.getSourceAsString());}}// api测试2@Testpublic void testQuery() throws IOException {SearchRequest searchRequest = new SearchRequest("es_book");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();searchSourceBuilder.query(matchAllQueryBuilder);searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);SearchHit[] hits = searchResponse.getHits().getHits();for (SearchHit hit : hits) {
// String result = hit.getSourceAsString();Map<String, Object> result = hit.getSourceAsMap();System.out.println(result.values());}}/*** 爬取数据写入es(es索引库中该索引不存在)*/@Testpublic void add() throws Exception {List<Content> contents = HtmlParseUtil.parseJD("elasticsearch");BulkRequest bulkRequest = new BulkRequest();for (Content content : contents) {bulkRequest.add(new IndexRequest("es_book").source(JSON.toJSONString(content), XContentType.JSON));}// 客户端提交请求BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);}
/*** 指定关键字在一个索引库下的多个字段进行匹配* 如 keyword: 班德尔城,在"addr", "name"字段中进行搜索匹配* @throws IOException*/@Testpublic void testMultiQuery() throws IOException {SearchRequest searchRequest = new SearchRequest("lol_info");MultiMatchQueryBuilder builder1 = QueryBuilders.multiMatchQuery(25, "age");MultiMatchQueryBuilder builder2 = QueryBuilders.multiMatchQuery("约德尔", "addr");// 不能使用精确termQuery进行多条件匹配查询
// TermQueryBuilder builder1 = QueryBuilders.termQuery("age", 25);
// TermQueryBuilder builder2 = QueryBuilders.termQuery("addr", "班德尔城");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
// searchSourceBuilder.from(1);
// searchSourceBuilder.size(5);// 查询结果按照age进行降序排序
// searchSourceBuilder.sort("age", SortOrder.DESC);
// searchSourceBuilder.query(builder);BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();// 包含builder1和builder2,相当于sql中的andboolQueryBuilder.must(builder1);boolQueryBuilder.must(builder2);// 等价于sql中的whereboolQueryBuilder.filter(builder2);// 等价于sql中的notboolQueryBuilder.mustNot(builder2);searchSourceBuilder.query(boolQueryBuilder);searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);SearchHit[] hits = searchResponse.getHits().getHits();for (SearchHit hit : hits) {System.out.println(hit.getSourceAsMap());}}}
Elasticsearch 7.6.2 API操作相关推荐
- ElasticSearch整合SpringBoot的API操作
在我们熟悉了 es 的基本rest 的操作之后,我们将使用SpringBoot进行整合,进一步熟悉Java API的相关操作. 1.创建一个标准的Springboot项目,引入Boot相关依赖之后,还 ...
- es java_JAVA API操作ES详解
一:运行环境 JDK:1.8 ES:5.6.4 二:JAVA依赖环境 elasticsearch.jar 5.6.4版本: xsi:schemaLocation="http://maven ...
- 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作
大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...
- 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作...
一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 ...
- ElasticSearch——Spring Boot 集成 ES 操作详解
文章目录 ElasticSearch--Spring Boot 集成 ES 操作详解 1.SpringBoot 集成 ES 2.索引的API操作详解 3.文档的API操作详解 ElasticSearc ...
- Elasticsearch中别名alias相关操作(创建、更新、删除)
1.索引别名概述 在Elasticsearch中,别名(alias)是一种将一个或多个索引(index)映射到一个逻辑名称上的方式.通过使用别名,我们可以为目标索引提供简洁.易于理解的名称,并将多个索 ...
- elasticsearch基本操作之--使用java操作elasticsearch
本文转载自: https://www.cnblogs.com/wenbronk/p/6386043.html 作者:wenbronk 转载请注明该声明. /** * 系统环境: vm12 下的cent ...
- Elastic search入门到集群实战操作详解(原生API操作、springboot整合操作)-step1
Elastic search入门到集群实战操作详解(原生API操作.springboot整合操作)-step2 https://blog.csdn.net/qq_45441466/article/de ...
- 2021年大数据Hadoop(十二):HDFS的API操作
2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 目录 HDFS的API操作 ...
最新文章
- NDK JNI方式读写Android系统的demo(二)
- Linux C编程--目录文件操作
- 计算机组成与系统结构名词解释,北京邮电大学 计算机系统结构(体系结构) 期末复习 术语解释...
- 使用指针在函数中交换数值
- C++程序的单元测试
- 优秀!Python神器NumPy 论文终登上了 顶刊Nature!
- 如何释放hdfs中的续租_装修中甲醛如何高效释放
- 串口读取gps信息php,Linux串口读取GPS数据
- python开源bi_开源bi软件排名哪些最为靠谱
- PyQt5 +requests 写一个能播放全网音乐的播放器
- 3.3 RESET and Initialization Procedure
- 智能人物画像综合分析系统——Day8
- 新点互联互通_新点驱动(江苏省互联互通版)
- 计算机网络ap参数,酒店计算机网络(含无线AP)系统主要技术参数.docx
- 大数据之Hadoop学习——动手实战学习MapReduce编程实例
- 《数据库系统应用程序开发》期末复习
- js中向对象添加键值对, 如 var data={1:'a' } ,添加 { 2:'b' }
- 超实数与布尔巴基学派
- Gitee码云remote: error: File: , exceeds 100.00 MB 踩坑指南
- ZZULIOJ:1023: 大小写转换