**本文基于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操作相关推荐

  1. ElasticSearch整合SpringBoot的API操作

    在我们熟悉了 es 的基本rest 的操作之后,我们将使用SpringBoot进行整合,进一步熟悉Java API的相关操作. 1.创建一个标准的Springboot项目,引入Boot相关依赖之后,还 ...

  2. es java_JAVA API操作ES详解

    一:运行环境 JDK:1.8 ES:5.6.4 二:JAVA依赖环境 elasticsearch.jar  5.6.4版本: xsi:schemaLocation="http://maven ...

  3. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

    大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...

  4. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作...

    一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 ...

  5. ElasticSearch——Spring Boot 集成 ES 操作详解

    文章目录 ElasticSearch--Spring Boot 集成 ES 操作详解 1.SpringBoot 集成 ES 2.索引的API操作详解 3.文档的API操作详解 ElasticSearc ...

  6. Elasticsearch中别名alias相关操作(创建、更新、删除)

    1.索引别名概述 在Elasticsearch中,别名(alias)是一种将一个或多个索引(index)映射到一个逻辑名称上的方式.通过使用别名,我们可以为目标索引提供简洁.易于理解的名称,并将多个索 ...

  7. elasticsearch基本操作之--使用java操作elasticsearch

    本文转载自: https://www.cnblogs.com/wenbronk/p/6386043.html 作者:wenbronk 转载请注明该声明. /** * 系统环境: vm12 下的cent ...

  8. Elastic search入门到集群实战操作详解(原生API操作、springboot整合操作)-step1

    Elastic search入门到集群实战操作详解(原生API操作.springboot整合操作)-step2 https://blog.csdn.net/qq_45441466/article/de ...

  9. 2021年大数据Hadoop(十二):HDFS的API操作

    2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 目录 HDFS的API操作 ...

最新文章

  1. NDK JNI方式读写Android系统的demo(二)
  2. Linux C编程--目录文件操作
  3. 计算机组成与系统结构名词解释,北京邮电大学 计算机系统结构(体系结构) 期末复习 术语解释...
  4. 使用指针在函数中交换数值
  5. C++程序的单元测试
  6. 优秀!Python神器NumPy 论文终登上了 顶刊Nature!
  7. 如何释放hdfs中的续租_装修中甲醛如何高效释放
  8. 串口读取gps信息php,Linux串口读取GPS数据
  9. python开源bi_开源bi软件排名哪些最为靠谱
  10. PyQt5 +requests 写一个能播放全网音乐的播放器
  11. 3.3 RESET and Initialization Procedure
  12. 智能人物画像综合分析系统——Day8
  13. 新点互联互通_新点驱动(江苏省互联互通版)
  14. 计算机网络ap参数,酒店计算机网络(含无线AP)系统主要技术参数.docx
  15. 大数据之Hadoop学习——动手实战学习MapReduce编程实例
  16. 《数据库系统应用程序开发》期末复习
  17. js中向对象添加键值对, 如 var data={1:'a' } ,添加 { 2:'b' }
  18. 超实数与布尔巴基学派
  19. Gitee码云remote: error: File: , exceeds 100.00 MB 踩坑指南
  20. ZZULIOJ:1023: 大小写转换

热门文章

  1. oracle小数点前面0显示,Oracle如何显示小数点前面的0
  2. 阿里品牌数据银行分析师复习资料库——人群圈选类问题答案
  3. 08.spritekit征程——场景中的动画
  4. vue结合esmap进行室内3D地图绘制
  5. OpenGl(二)点线设置、多边形镂空
  6. linux securecrt快捷键设置,SecureCRT常用快捷键设置
  7. 174 多态案例/猫和狗
  8. 学校报名登记收缴费用小程序开发制作
  9. matplotlib中的label标签
  10. 导柱导向机构设计的注意事项