ES基本操作(JavaAPI篇)

引入jar包依赖

    <dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.0</version></dependency><!-- es客户端 --><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.8.0</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.8.2</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.8.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.9</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies>

调用API创建Index

查询和删除Index

        GetIndexRequest request = new GetIndexRequest("user");GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT);System.out.println("Aliases = " + response.getAliases());System.out.println("Mappings = " + response.getMappings());// 删除DeleteIndexRequest deleteRequest = new DeleteIndexRequest("user");AcknowledgedResponse deleteResp = client.indices().delete(deleteRequest, RequestOptions.DEFAULT);System.out.println("deleteResp = " + deleteResp.toString());

创建和修改文档

User user = new User();
user.setName("刘德华");
user.setAge(60L);
user.setSex("男");
IndexRequest request = new IndexRequest();
request.index("user").id("1");
// 插入es需要转成json格式
request.source(JSON.toJSONString(user), XContentType.JSON);
IndexResponse index = client.index(request, RequestOptions.DEFAULT);// 修改
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index("user").id("1");
updateRequest.doc(XContentType.JSON, "age", 65L);
UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);System.out.println(updateResponse.getResult());

查询文档和删除

// 查询
GetRequest request = new GetRequest();
request.index("user").id("1");
GetResponse documentFields = client.get(request, RequestOptions.DEFAULT);
System.out.println(documentFields.getSource());// 删除
DeleteRequest deleteRequest = new DeleteRequest();
deleteRequest.index("user").id("1");
DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);
System.out.println(deleteResponse.getResult());

批量新增和删除

        BulkRequest bulkRequest = new BulkRequest();bulkRequest.add(new IndexRequest().index("user").id("2").source(JSON.toJSONString(new User("梁朝伟", "男", 62L)), XContentType.JSON));bulkRequest.add(new IndexRequest().index("user").id("3").source(JSON.toJSONString(new User("黎明", "男", 58L)), XContentType.JSON));bulkRequest.add(new IndexRequest().index("user").id("4").source(JSON.toJSONString(new User("郭富城", "男", 55L)),XContentType.JSON));bulkRequest.add(new IndexRequest().index("user").id("5").source(JSON.toJSONString(new User("刘亦菲", "女", 28L)), XContentType.JSON));BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);// 批量删除BulkRequest bulkRequest = new BulkRequest();bulkRequest.add(new DeleteRequest().index("user").id("2"));bulkRequest.add(new DeleteRequest().index("user").id("3"));bulkRequest.add(new DeleteRequest().index("user").id("4"));bulkRequest.add(new DeleteRequest().index("user").id("5"));BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT);

全量查询

        SearchRequest searchRequest = new SearchRequest();searchRequest.indices("user").source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);for (SearchHit hit : searchResponse.getHits()) {System.out.println(hit.getSourceAsString());}

对于其他的查询,需要修改“QueryBuilders.matchAllQuery()”

条件查询、排序、分页、指定查询字段

        SearchRequest searchRequest = new SearchRequest();searchRequest.indices("user");// 排除的字段String[] excludes = {};// 查询的字段String[] includes = {"name"};searchRequest.source(new SearchSourceBuilder()// 条件查询.query(QueryBuilders.termQuery("sex", "男"))// 指定查询的字段.fetchSource(includes, excludes)// 排序.sort("age", SortOrder.DESC)// 分页.from(0).size(2));SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);for (SearchHit hit : searchResponse.getHits()) {System.out.println(hit.getSourceAsString());}

组合查询、高亮显示

注意:中文自动分词,可模糊搜索。如:

must(QueryBuilders.matchQuery("name", "亦菲"))
        SearchRequest searchRequest = new SearchRequest();searchRequest.indices("user");searchRequest.source(new SearchSourceBuilder().query(QueryBuilders.boolQuery()// and条件//.must(QueryBuilders.matchQuery("age", 28))//.must(QueryBuilders.matchQuery("sex", "女"))//.must(QueryBuilders.matchQuery("name", "亦菲"))// or条件.should(QueryBuilders.matchQuery("age", 28)).should(QueryBuilders.matchQuery("age", 58))).highlighter(new HighlightBuilder().preTags("<font color='red'>").postTags("</font>").field("name")));SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);for (SearchHit hit : searchResponse.getHits()) {System.out.println(hit.getSourceAsString());}

范围查询

        SearchRequest searchRequest = new SearchRequest();searchRequest.indices("user");searchRequest.source(new SearchSourceBuilder().query(QueryBuilders.rangeQuery("age").gte(18).lt(30)));SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);for (SearchHit hit : searchResponse.getHits()) {System.out.println(hit.getSourceAsString());}

聚合查询

        // 聚合查询SearchRequest searchRequest = new SearchRequest();searchRequest.indices("user");searchRequest.source(new SearchSourceBuilder().aggregation(// 最小值//AggregationBuilders.min("minAge").field("age")// 分组统计AggregationBuilders.terms("ageGroup").field("age")));SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/4880.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Loadrunner怎么实现MD5加密

目录 前言&#xff1a; 1、写一个md5.h文件&#xff0c;将其放入脚本路径下 2、在globals.h中加入#include “md5.h” 3、在Action中写脚本&#xff0c;脚本示例如下&#xff1a; 前言&#xff1a; 在 LoadRunner 中实现 MD5 加密可以通过使用 LoadRunner 提供的函数来完成…

【FPGA零基础学习之旅#9】状态机基础知识

&#x1f389;欢迎来到FPGA专栏~状态机基础知识 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能指正…

macOS Ventura 13.5beta4(22G5059d)发布

系统介绍 黑果魏叔 6 月 28 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 4 更新&#xff08;内部版本号&#xff1a;22G5059d&#xff09;&#xff0c;本次更新距离上次发布隔了 12 天。 macOS Ventura 带来了台前调度、连续互通相机、F…

TypeScript ~ 掌握基本类型 ②

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; TypeScript ~ TS &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &…

SQL-每日一题【182.查找重复的电子邮箱】

题目 表: Person 编写一个 SQL 查询来报告所有重复的电子邮件。 请注意&#xff0c;可以保证电子邮件字段不为 NULL。 以 任意顺序 返回结果表。 查询结果格式如下例。 示例 1: 解题思路 前置知识 count&#xff08;&#xff09; 1.count(*) &#xff1a;统计所有的行数&a…

软考01进制转换

文章目录 前言一、二进制1.二进制转十进制2.二进制转十六进制 二、十进制1.十进制转二进制2.十进制转十六进制 二、十六进制1.十六进制转二进制2.十六进制转十进制 总结 前言 比较常用的进制有二进制、十进制、十六进制这是我们的主要学习目标。 一、二进制 二进制由0和1组成&…

单表-DQL

注意&#xff1a;这张图还包含了对于的顺序&#xff0c;先分组再排序&#xff0c;再分页&#xff0c;顺序不能乱 基本查询 # 1.基本查询 # 查询全部行 select * from tb_emp; select id, user_name, password, name, gender, image, job, entry_date, create_time, update_ti…

ZLMediaKit 的安装及使用介绍

ZLMediaKit 介绍 ZLMediaKit是一个基于C开发的开源流媒体服务器。它提供了高性能的音视频处理能力&#xff0c;支持常见的流媒体协议&#xff0c;如RTSP、RTMP、HLS和HTTP-FLV&#xff0c;并且具有低延迟和高并发处理能力。 开源地址&#xff1a;https://github.com/xia-chu/…

【JAVA】十分钟带你了解java的前世今生

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【初始JAVA】 文章目录 前言JAVA介绍诞生&#x1f52c;名字与图标&#x1f916;发展&#x1f6e9;️未来&#x1fa84; 前言 玩过我的世界的朋友想必对JAVA以及它的图标都很熟悉&#xff0c;在游戏开始画面…

Spring进阶学习(附面试快速答法)

文章目录 1、Bean线程安全问题小总结面试快速答法 2、AOP小总结面试快速答法 3、bean的生命周期小总结面试快速答法 4、循环引用小总结面试快速答法 &#xff15;、SpringMVC的执行流程小总结面试快速答法 6、Springboot自动配置原理小总结面试快速答法 7、Spring框架常见注解面…

【数据库原理】MyShop 商城数据库设计(SQL server)

MyShop 商城数据库设计 项目背景定义课程设计要求概念结构设计逻辑结构设计数据结构的描述用户信息数据结构的描述地址信息数据结构的描述商品类别数据结构的描述商品数据结构的描述购物车数据结构的描述订单数据结构的描述订单项数据结构的描述 物理结构设计用户表结构地址表结…

2013年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…