基于上篇文档基础上:es配置和工具类

索引

String indexName = "lockie_test2";
  • 新增索引
代码:
boolean index = EsClientUtil.createIndex(indexName);
System.out.println("创建索引是否成功:" + index);执行结果:
创建索引是否成功:true
  • 检查索引是否存在
代码:
boolean lockie_test = EsClientUtil.checkIndexExist(indexName);
System.out.println("索引是否存在:" + lockie_test);执行结果:
索引是否存在:true

  • 新增分片索引

调用createIndex默认新增的索引的分片,副本都是1,如果想要指定分片和副本则调用下面的方法

代码:
boolean createIndex = EsClientUtil.createIndex(indexName, 2, 2);
System.out.println("创建分片索引是否成功:" + createIndex);
  • 开启索引
boolean openIndex = EsClientUtil.openIndex(indexName);System.out.println("开启索引是否成功:" + openIndex);
  • 关闭索引

索引关闭了就不能执行查询等操作

代码:
boolean closeIndex = EsClientUtil.closeIndex(indexName);System.out.println("关闭索引是否成功:" + closeIndex);

  • 删除索引
代码:
boolean deleteIndex = EsClientUtil.deleteIndex(indexName);
System.out.println("删除索引是否成功:" + deleteIndex);执行结果:
删除索引是否成功:true

Mapping

  • 检查mapping是否存在
boolean checkMappingExist = EsClientUtil.checkMappingExist(indexName);System.out.println("mapping是否存在:" + checkMappingExist);

新增索引后mapping默认为空

  • 新增mapping

首先新增一个mapping类,里面定义mapping字段的类型

import com.dst.charge.business.center.es.elasticsearch7.mapping.BaseElasticSearchMapping;
import org.elasticsearch.Version;
import org.elasticsearch.index.mapper.DateFieldMapper;
import org.elasticsearch.index.mapper.NumberFieldMapper;
import org.elasticsearch.index.mapper.RootObjectMapper;
import org.elasticsearch.index.mapper.TextFieldMapper;import java.io.Serializable;/*** @author: lockie* @Date: 2019/12/6 14:13* @Description: 用户mapping*/
public class UserMapping extends BaseElasticSearchMapping {private static final String INDEX_TYPE = "document";public UserMapping() {super(INDEX_TYPE, Version.V_7_3_1);}@Overrideprotected void configureRootObjectBuilder(RootObjectMapper.Builder builder) {builder.add(new NumberFieldMapper.Builder("userId", NumberFieldMapper.NumberType.INTEGER)).add(new TextFieldMapper.Builder("userName")).add(new NumberFieldMapper.Builder("age", NumberFieldMapper.NumberType.INTEGER)).add(new TextFieldMapper.Builder("address")).add(new DateFieldMapper.Builder("birthday")).add(new TextFieldMapper.Builder("phoneNumber")).add(new TextFieldMapper.Builder("email")).add(new NumberFieldMapper.Builder("status", NumberFieldMapper.NumberType.INTEGER)).add(new TextFieldMapper.Builder("remark"));}}

然后再调用工具类生成mapping

boolean putMapping = EsClientUtil.postMapping(indexName, new UserMapping());System.out.println("新增mapping是否成功:" + putMapping);

文档

首先创建mapping对应的java对象 UserEntity

import lombok.Data;import java.io.Serializable;
import java.util.Date;/*** @author: lockie* @Date: 2019/12/9 17:27* @Description:*/
@Data
public class UserEntity implements Serializable {private int userId;private String userName;private int age;private String address;private Date birthday;private String phoneNumer;private String email;private int status;private String remark;
}
  • 新增、更新、删除文档
UserEntity user = new UserEntity();
user.setUserId(1);
user.setUserName("tom");
user.setAge(20);
user.setAddress("北京市");
user.setBirthday(DateUtil.convert2Date("1999-10-01", DateUtil.DATEFORMAT));
user.setPhoneNumer("13500001111");
user.setEmail("tom@163.com");
user.setStatus(1);UserEntity user2 = new UserEntity();
user2.setUserId(2);
user2.setUserName("lily");
user2.setAge(22);
user2.setAddress("上海市");
user2.setBirthday(DateUtil.convert2Date("1997-05-21", DateUtil.DATEFORMAT));
user2.setPhoneNumer("13800002222");
user2.setEmail("lily@163.com");
user2.setStatus(1);UserEntity user3 = new UserEntity();
user3.setUserId(3);
user3.setUserName("Tony");
user3.setAge(30);
user3.setAddress("杭州市");
user3.setBirthday(DateUtil.convert2Date("1989-05-21", DateUtil.DATEFORMAT));
user3.setPhoneNumer("13600003333");
user3.setEmail("Tony@163.com");
user3.setStatus(0);UserEntity user4 = new UserEntity();
user4.setUserId(4);// 转成成json字符串形式
String jsonString = JSONObject.toJSONString(user);// 新增文档
EsClientUtil.addDocByJson(indexName, "4", jsonString);// 更新文档
EsClientUtil.updateDocByJson(indexName, "3", jsonString);// 删除文档
EsClientUtil.deleteDoc(indexName, "4");

  • 根据ID获取文档
Map<String, Object> doc = EsClientUtil.getDoc(indexName, "1");
System.out.println("根据ID获取文档数据:" + JSONObject.toJSONString(doc));

根据ID获取文档数据:{"address":"北京市","age":20,"birthday":938707200000,"email":"tom@163.com","phoneNumer":"13500001111","remark":"tom的备注","status":1,"userId":1,"userName":"tom"}

  • 批量新增、更新、删除文档
List<Map<String, String>> params = new ArrayList<>();UserEntity user5 = new UserEntity();
user5.setUserId(5);
user5.setUserName("Jack");
user5.setAge(38);
user5.setAddress("天津市");
user5.setBirthday(DateUtil.convert2Date("1981-02-11", DateUtil.DATEFORMAT));
user5.setPhoneNumer("131000055555");
user5.setEmail("Jack@163.com");
user5.setStatus(1);
user5.setRemark("Jack的备注");Map<String, String> map5 = new HashedMap();
map5.put("index", "lockie_test2");
map5.put("id", "5");
map5.put("json", JSONObject.toJSONString(user5));UserEntity user6 = new UserEntity();
user6.setUserId(6);
user6.setUserName("Rain");
user6.setAge(25);
user6.setAddress("深圳市");
user6.setBirthday(DateUtil.convert2Date("1994-08-01", DateUtil.DATEFORMAT));
user6.setPhoneNumer("131000066666");
user6.setEmail("Rain@163.com");
user6.setStatus(1);
user6.setRemark("Rain的备注");Map<String, String> map6 = new HashedMap();
map6.put("index", "lockie_test2");
map6.put("id", "6");
map6.put("json", JSONObject.toJSONString(user6));params.add(map5);
params.add(map6);// 批量新增
EsClientUtil.bulkAdd(params);// 批量更新
EsClientUtil.bulkUpdate(params);// 批量删除
EsClientUtil.bulkDelete(params);
  • 批量获取文档
List<Map<String, Object>> list = EsClientUtil.multiGet(params);
System.out.println("批量获取:" + JSONObject.toJSONString(list));

批量获取:[{"address":"天津市","age":38,"birthday":350668800000,"email":"Jack@163.com","phoneNumer":"131000055555","remark":"Jack的备注","status":1,"userId":5,"userName":"Jack"},{"address":"深圳市","age":25,"birthday":775670400000,"email":"Rain@163.com","phoneNumer":"131000066666","remark":"Rain的备注","status":1,"userId":6,"userName":"Rain"}]

  • 根据条件删除
QueryBuilder deleteBuilder = QueryBuilders.termsQuery("userId", "4");
EsClientUtil.deleteByQuery(indexName, deleteBuilder);

查询

  • 查询所有的数据
// 创建查询条件
QueryBuilder queryBuilder = QueryBuilders.matchAllQuery();
SearchSourceBuilder builder = new SearchSourceBuilder();
// 使用query可以排序,使用postFilter不支持排序
builder.query(queryBuilder);
// 设置查询最大数量,默认10条
builder.size(10000);
// 设置排序字段
builder.sort("userId", SortOrder.ASC);List<UserEntity> searchList = EsClientUtil.search(indexName, builder, UserEntity.class);
System.out.println("全部查询结果:" + JSONObject.toJSONString(searchList));

全部查询结果:[{"address":"北京市","age":20,"birthday":938707200000,"email":"tom@163.com","phoneNumer":"13500001111","remark":"tom的备注","status":1,"userId":1,"userName":"tom"},{"address":"上海市","age":22,"birthday":864144000000,"email":"lily@163.com","phoneNumer":"13800002222","remark":"lily的备注","status":1,"userId":2,"userName":"lily"},{"address":"杭州市","age":30,"birthday":611679600000,"email":"Tony@163.com","phoneNumer":"13600003333","remark":"Tony的备注","status":0,"userId":3,"userName":"Tony"},{"address":"天津市","age":38,"birthday":350668800000,"email":"Jack@163.com","phoneNumer":"131000055555","remark":"Jack的备注","status":1,"userId":5,"userName":"Jack"},{"address":"深圳市","age":25,"birthday":775670400000,"email":"Rain@163.com","phoneNumer":"131000066666","remark":"Rain的备注","status":1,"userId":6,"userName":"Rain"}]

  • 复合查询,多条件
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.size(10000);
builder.sort("userId", SortOrder.ASC);// 构建查询条件,年龄在20到30之间,状态是0,或者城市是北京市
QueryBuilder queryBuilder3 = QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery("age").from("20").to("30")).should(QueryBuilders.termsQuery("address", "北京市")).filter(QueryBuilders.termsQuery("status", "0"));
builder.query(queryBuilder3);List<UserEntity> boolQueryList = EsClientUtil.search(indexName, builder, UserEntity.class);
System.out.println("多条件查询结果:" + JSONObject.toJSONString(boolQueryList));

多条件查询结果:[{"address":"上海市","age":30,"birthday":611679600000,"email":"Tony@163.com","phoneNumer":"13600003333","remark":"Tony的备注","status":0,"userId":3,"userName":"Tony"}]

java代码对es操作相关推荐

  1. 分布式搜索引擎01-elasticsearch-介绍、倒排索引原理、概念(文档和字段,索引和映射)、安装、索引库crud、文档crud、RestAPI(java代码实现es的crud)

    文章目录 分布式搜索引擎01 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 1.1.2.ELK技术栈 1.1.3.elasticse ...

  2. java代码数据库添加操作_java连接数据库后进行更新插入操作

    接上一次的查询操作,这次将更新与插入的代码补充 首先是服务端的接收端,接收到客户端的请求则发送相应操作 if ("1".equals(message)) { //从mysql数据库 ...

  3. java代码查询elasticsearch索引

    用java代码查询ES索引 public class ElasticsearchSearchTest {public static void main(String[] args) throws IO ...

  4. Java读写xml文件操作(3W)what why how where

    一. what 1.xml是一种可扩展的标记语言. 2.标记语言:是一种通过标签来描述数据的一门语言. 3.可扩展:标签的名字可以自己定义. 4.可以说xml文件是由标签组成,而标签是可以自定义的. ...

  5. java代码怎样连接es,Elasticsearch 连接ES的两种方式

    1.创建客户端节点来连接: 其中client(true)将node指定为客户端节点,所以这个不能写漏掉,客户端节点是不持有数据的, Java代码   Node node = NodeBuilder.n ...

  6. es文本分析java代码_Elasticsearch系列---Java客户端代码Demo

    前言 前面历经33篇内容的讲解,与ES的请求操作都是在Kibana平台上用Restful请求完成的,一直没发布Java或python的客户端代码,Restful才是运用.理解ES核心功能最直接的表达方 ...

  7. 【es】ELASTICSEARCH之自定义JAVA代码的安全策略管理

    1.概述 转载:[es]ELASTICSEARCH之自定义JAVA代码的安全策略管理 在我们首次使用intellij直接运行elasticsearch的源代码的时候,我们必然会碰到下边这样一个安全性的 ...

  8. elasticsearch的java代码操作详解

    Java操作es集群步骤 1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 默认集群名为elasticsearch,如果集群名称和指定的不一致则在使用节点资源时会报错. 2:嗅探功 ...

  9. Elasticsearch——使用Java API实现ES中的索引、映射、文档操作

    文章目录: 1.开篇 2.案例详解 2.1 创建ES客户端:完成与ES服务端的连接 2.2 创建索引 2.3 查看索引 2.4 删除索引 2.5 创建文档 2.6 修改文档 2.7 查看文档 2.8 ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task30.通配符匹配
  2. GitHub:基于epoll机制的高并发聊天室,c语言实现
  3. Java日期时间类型
  4. 阿尔卡特朗讯sdh设备板卡汇总_全球通信设备企业集中,中国企业脱颖而出!
  5. Qt学习笔记-web图片爬取器(webKit)Qt5.6以下的版本才有
  6. mysql sphfiks_使用sphinx索引mysql数据
  7. 黑马程序员-java-高新技术中《九》
  8. python装饰器函数执行后日志_Python装饰器记录日志、异常处理、函数添加,python,处理函数,功能...
  9. php 百科源码,php源码是什么意思
  10. ASP.NET 3.5 开发大全DOC版
  11. php调用第三方接口代码,PHP接口编程——调用第三方接口获取天气
  12. Java项目文件目录结构介绍
  13. 德保罗大学计算机排名,德保罗大学费用
  14. Shiro记住我(RememberMe)
  15. 反向代理服务器nginx
  16. java练习-String类、StringBuilder类、StringBuffer类10
  17. powerpoint html文件类型,PowerPoint 2016无法打开此种文件类型怎么办-PPT打不开文件解决办法...
  18. 猿创征文|我在人间编程那些年
  19. Python之基本数据类型
  20. idea整合gitte团队协作开发项目

热门文章

  1. 遗传算法MATLAB实现(2):一元函数优化举例
  2. 三菱goto怎么用_为什么说goto是一种不好的用法?
  3. 连连看外挂制作 —— 修改分数(1)
  4. HTML5期末大作业:饮食主题网站设计——咖啡餐厅(5页) HTML+CSS+JavaScript 学生dreamweaver网页设计作业成品
  5. DiskGenius使用图解 (转自网络)
  6. mysql慢日志脚本_MYSQL慢速(SLOW LOG)脚本分析
  7. 软件卸载不得不说的几件事
  8. Jetson TX2刷rtso-9003并使用Jetpack安装软件包
  9. 记录一次与华为大咖的交流
  10. J2SE在线中文API