引入依赖

<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使用的更多相关文章

  1. Java操作ES

    一.ES基本概念 1. 节点:Elastic是一个分布式数据库,每个数据库实例是一个节点Node,一台服务器上可以有多个Node,可以多台服务器协同工作 2. 集群:一组节点Node构成一个集群Clu ...

  2. Elasticsearch笔记五之java操作es

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

  3. Java引入的一些新特性

    Java引入的一些新特性 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本. Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程, ...

  4. java 引入自定义字体font后出现的硬盘吃光的问题

    有个需求要用美术字体在图片上写字 用自定义的文字有两个方法: 1. Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, InputStream ...

  5. 基于java的ES开发

    3.1 环境配置 Jdk 1.8及以上 Elasticsearch.client 5.5.2(与服务器版本一致) Log4j 2.7及以下 maven工程必要的jar包依赖 <project x ...

  6. JAVA 引入 junit工具框架

    我遇到的麻烦 : 开始直接按照视频上的来做,直接也是引入的他上面的jar ,但是我只引入了一个,就是上面的junit-4.4.jar,然后就会报错,会出现,空指针的错误, 后面我又按照网上的教程 这里 ...

  7. 4、2 java 使用es

    1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  8. java——引入第三方jar包

    第一步:项目->New->Folder:创建一个文件夹: 第二步:把要引入的jar包粘贴到新建的文件夹中: 第三步:选中引入的jar包->Build Path->Add to ...

  9. Java创建ES索引实现

    1.pom.xml文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  10. maven-腾讯SDK(QQ)接口java引入pom配置

    maven的pom.xml配置 <dependency> <groupId>net.gplatform</groupId> <artifactId>Sd ...

随机推荐

  1. docker安装Kafka(windows版)

    windows环境安装docker参考安装docker桌面版(Windows) 这一步如果出现报错的话可以直接输入wsl -l -v命令来查看当前Ubuntu的wsl版本 安装Kafka需要先安装 z ...

  2. harbor 构建企业级镜像仓库

    安装harbor 构建企业级镜像仓库 Harbor是由VMware公司开源的镜像仓库,harbor是在docker Registry上进行了企业级扩展,从而获得了更广泛的应用,这些新的企业级特性包括: ...

  3. opensuse tw快速部署

    使用GUI快速配置opensusetw 先看官方配置指南 换源 清华源之oss+non-oss links 清华源之packman links sudo zypper ar -cfg 'https:/ ...

  4. 7.22考试总结(NOIP模拟23)[联·赛·题]

    不拼尽全力去试一下,又怎么会知道啊 前言 又是被细节问题搞掉的一天. T1 的话,与正解相差无几,少打了两个 else 一个 ls 打成了 rs,然后就爆零了(本来还有 45pts 的),然后加了一个 ...

  5. 获取URL中查询参数 URL中动态参数

    通过 req.query 对象,可以访问到客户端通过查询字符串的形式发送到服务器的参数 app.get('/',(req,res)=>{ console.log(req.query) }) .U ...

  6. vue bus传参

    新建一个js文件,命名为bus.js.bus.js文件的内容为: import Vue from 'vue' const bus = new Vue() export default bus 页面de ...

  7. JS 过滤掉两个数组中对象id值相等的项

    const arr1 = [{ id: 1, name: '老二' }]; const arr2 = [{ id: 1, name: '网' }, { id: 2, name: '二位' },{ id ...

  8. Go 语言中的异常处理简单实践 panic、recover【GO 基础】

    〇.Go 中的异常处理简介 Golang 没有结构化异常,使用 panic 抛出错误,recover 捕获错误. panic.recover 参数类型为 interface{},因此可抛出任何类型对象 ...

  9. 效率提升利器:一个在线的.NET源码查询网站

    前言 你是否有这样的苦恼,有时候需要查询.NET中的某个类型.方法.属性或程序集的源代码,但又不想从GitHub中下载源代码.今天大姚分享一个在线且实用的.NET源码查询网站. 在线查询地址 http ...

  10. 洛谷 P1226 快速幂

    题目链接:快速幂 思路 简单快速幂模板.a ^ 17 = (a ^ 2) ^ 8 * a,此时pow()中的y就可以视为17 -> 8(y >>= 1),pow()中的x就是底数a ...