java引入es使用
引入依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
初始化对象
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
HttpHost.create("http://192.168.150.101:9200")
));
索引CRUD操作
public class ElasticIndexTest {
private RestHighLevelClient client;
@BeforeEach
void setUp(){
client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.88.95",9200,"http")));
} @AfterEach
void tearDown() throws IOException {
if(client!=null)
client.close();
} @Test
void create() throws IOException {
CreateIndexRequest test = new CreateIndexRequest("hmall");
test.source(MAPPING_TEMPLATE, XContentType.JSON);
client.indices().create(test, RequestOptions.DEFAULT);
}
@Test
void get() throws IOException {
GetIndexRequest test = new GetIndexRequest("hmall");
client.indices().get(test, RequestOptions.DEFAULT);
}
@Test
void delete() throws IOException {
DeleteIndexRequest test = new DeleteIndexRequest("hmall");
client.indices().delete(test, RequestOptions.DEFAULT);
}
private final static String MAPPING_TEMPLATE="{\n" +
" \"mappings\": {\n" +
" \"properties\": {\n" +
" \"id\":{\n" +
" \"type\": \"keyword\"\n" +
" },\n" +
" \"name\":{\n" +
" \"type\": \"text\",\n" +
" \"analyzer\": \"ik_smart\"\n" +
" },\n" +
" \"price\":{\n" +
" \"type\": \"integer\"\n" +
" },\n" +
" \"image\":{\n" +
" \"type\": \"keyword\",\n" +
" \"index\": false\n" +
" },\n" +
" \"category\":{\n" +
" \"type\": \"keyword\"\n" +
" },\n" +
" \"brand\":{\n" +
" \"type\": \"keyword\"\n" +
" },\n" +
" \"sold\":{\n" +
" \"type\": \"integer\"\n" +
" },\n" +
" \"comment_count\":{\n" +
" \"type\": \"integer\",\n" +
" \"index\": false\n" +
" },\n" +
" \"isAD\":{\n" +
" \"type\": \"boolean\" \n" +
" },\n" +
" \"update_time\":{\n" +
" \"type\": \"date\"\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
}
文档CRUD操作
public class ElasticDocumentTest {
@Autowired
private IItemService service;
private RestHighLevelClient client;
@BeforeEach
void setUp(){
client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.88.95",9200,"http")));
} @AfterEach
void tearDown() throws IOException {
if(client!=null)
client.close();
} /* 新增
* 全量修改:写入重复ID即视为全量修改
* */
@Test
void addAndUpdateDoc() throws IOException {
Item byId = service.getById("317578");
ItemDoc itemDoc = BeanUtil.copyProperties(byId, ItemDoc.class); IndexRequest request=new IndexRequest("hmall").id(itemDoc.getId());
request.source(JSONUtil.toJsonStr(itemDoc),XContentType.JSON);
client.index(request,RequestOptions.DEFAULT);
}
/*局部修改*/
@Test
void updateDoc() throws IOException {
UpdateRequest request=new UpdateRequest("hmall","317578");
request.doc(
"price","25600"
);
client.update(request,RequestOptions.DEFAULT);
}
/*查询*/
@Test
void getDoc() throws IOException {
GetRequest getRequest=new GetRequest("hmall","317578");
GetResponse response = client.get(getRequest, RequestOptions.DEFAULT);
String json = response.getSourceAsString();
ItemDoc itemDoc = JSONUtil.toBean(json, ItemDoc.class);
}
/*删除*/
@Test
void deleteDoc() throws IOException {
DeleteRequest deleteRequest=new DeleteRequest("hmall","317578");
client.delete(deleteRequest, RequestOptions.DEFAULT); }
}
文档批处理操作:
/*批处理*/
@Test
void bulkDoc() throws IOException {
int pageSize=500;
int pageNum=1;
while(true){
Page<Item> page = service.lambdaQuery()
.eq(Item::getStatus, 1)
.page(Page.of(pageNum, pageSize));
List<Item>items=page.getRecords();
if(items==null||items.isEmpty()){
return;
}
BulkRequest request=new BulkRequest(); for (Item item : items) {
request.add(new IndexRequest("hmall")
.id(item.getId().toString())
.source(JSONUtil.toJsonStr(BeanUtil.copyProperties(item, ItemDoc.class)),XContentType.JSON)
);
}
client.bulk(request,RequestOptions.DEFAULT);
pageNum++;
} }
java引入es使用的更多相关文章
- Java操作ES
一.ES基本概念 1. 节点:Elastic是一个分布式数据库,每个数据库实例是一个节点Node,一台服务器上可以有多个Node,可以多台服务器协同工作 2. 集群:一组节点Node构成一个集群Clu ...
- Elasticsearch笔记五之java操作es
Java操作es集群步骤1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 默认集群名为elasticsearch,如果集群名称和指定的不一致则在使用节点资源时会报错. 2:嗅探功能 ...
- Java引入的一些新特性
Java引入的一些新特性 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本. Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程, ...
- java 引入自定义字体font后出现的硬盘吃光的问题
有个需求要用美术字体在图片上写字 用自定义的文字有两个方法: 1. Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, InputStream ...
- 基于java的ES开发
3.1 环境配置 Jdk 1.8及以上 Elasticsearch.client 5.5.2(与服务器版本一致) Log4j 2.7及以下 maven工程必要的jar包依赖 <project x ...
- JAVA 引入 junit工具框架
我遇到的麻烦 : 开始直接按照视频上的来做,直接也是引入的他上面的jar ,但是我只引入了一个,就是上面的junit-4.4.jar,然后就会报错,会出现,空指针的错误, 后面我又按照网上的教程 这里 ...
- 4、2 java 使用es
1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- java——引入第三方jar包
第一步:项目->New->Folder:创建一个文件夹: 第二步:把要引入的jar包粘贴到新建的文件夹中: 第三步:选中引入的jar包->Build Path->Add to ...
- Java创建ES索引实现
1.pom.xml文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- maven-腾讯SDK(QQ)接口java引入pom配置
maven的pom.xml配置 <dependency> <groupId>net.gplatform</groupId> <artifactId>Sd ...
随机推荐
- SELinux策略语法以及示例策略
首发公号:Rand_cs SELinux策略语法以及示例策略 本文来讲述 SELinux 策略常用的语法,然后解读一下 SELinux 这个项目中给出的示例策略 安全上下文 首先来看一下安全上下文的格 ...
- DP Record
从 2024/5/4 往后开始记录捏. T1. 给你一棵树,定义一个集合的权值为 \(\dfrac{\sum_{x\in S}V_x}{\sum_{x\in S}C_x}\).若一个点 \(\in S ...
- OceanBase 金融项目优化案例
领导让我帮忙支持下其他项目的SQL优化工作,呦西,是收集案例的好时机. 下面SQL都是在不能远程的情况下,按照原SQL的逻辑等价改写完成否发给现场同事验证. 案例一 慢SQL,4.32秒: SELEC ...
- java线程的park unpark方法
标签(空格分隔): 多线程 park 和 unpark的使用 park和unpark并不是线程的方法,而是LockSupport的静态方法 暂停当前线程 LockSupport.park();//所在 ...
- Java线程池maximumPoolSize和workQueue哪个先饱和?
先说结论,真正的饱和顺序是corePoolSize -> workQueue -> maximumPoolSize. 我们都知道,线程池有以下参数 ThreadPoolExecutor(i ...
- 【原创】EtherCAT主站IgH解析(二)-- Linux/Windows/RTOS等多操作系统IgH EtherCAT主站移植指南
版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 前言 目前,EtherCAT商用主站有:Aconti ...
- 认真学习CSS3-问题收集-101号-莫名其妙的row行高
其他人都有事情,有些事情只好自己上阵,自己做,最踏实! 做了两个基本一样的页面,都是采用bootsrap+jquey+js的技术,业务内容就是简单的查询,加上一些简单的效果,没有啥特别的内容. 由于历 ...
- Linux/Unix-stty命令详解
文章目录 介绍 stty命令的使用方法 stty的参数 我常用的选项 所有选项 介绍 stty用于查询和设置当前终端的配置. 如果你的终端回车不换行.输入命令不显示等各种奇葩问题,那么stty命令可以 ...
- Atcoder Beginner Contest 321 G - Electric Circuit 题解 - 状压dp | 指定最低位
为了更好的阅读体验,请点击这里 题目链接:G - Electric Circuit 看到了 \(N\) 的数据范围,因此是显然的状压 dp. 不妨设 \(f_S\) 为仅使用 \(S\) 集合中的所有 ...
- 配置pod拉取harbor容器镜像仓库私有镜像:secret保存账号密码
目录 一.系统环境 二.前言 三.Docker-Registry类型的Secret简介 四.镜像仓库简介 五.搭建Harbor容器镜像仓库 5.1 安装Harbor 5.2 创建项目 5.3 推送镜像 ...