Es学习第十一课,使用java操作elasticsearch
前面十节课我们已经把ES的基本概念和使用讲的差不多了,现在我们就用基于java来实际开发一个操作ES的小项目,带大家来一起练练手。
1、我们用IDEA创建一个maven项目

项目结构如上图所示,然后我们就引入操作ES需要用到的jar和JUNIT,pom.xml最终配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.kakatadage</groupId>
<artifactId>esdemo</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.5.1</version>
</dependency> </dependencies> <build>
<finalName>esdemo</finalName>
<plugins>
<plugin>
<!-- 设置javac编译器的版本和编码字符 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf8</encoding><!-- 编译器编码 -->
</configuration>
</plugin>
</plugins>
</build>
</project>
项目创建完成后,我们就可以针对ES实现数据的增删改查了。
2、实现ES实现查询
新建一个测试类,如下图:

最后代码如下所示:
package com.kakatadage.esdemo.test; import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Test; import java.net.InetAddress;
import java.net.UnknownHostException; public class EsDemo { //从ES中查询数据
@Test
public void test1() throws UnknownHostException {
//指定ES集群
Settings setting = Settings.builder().put("cluster.name",
"my-application").build(); //创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("127.0.0.1"),9300));
//get方式数据查询 ,参数为Index,type和id
GetResponse response = client.prepareGet("lib4","items","5").get(); System.out.println(response.getSourceAsString());
client.close();
}
}
返回结果就是一个JSON字符串
{ "price" : null, "itemID" : "ID1005" }
3、java 插入ES一条数据
//插入数据
@Test
public void test2() throws IOException {
//指定ES集群
Settings setting = Settings.builder().put("cluster.name",
"my-application").build(); //创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("127.0.0.1"),9300)); XContentBuilder doc = XContentFactory.jsonBuilder()
.startObject()
.field("id","1")
.field("title","我在学习es插入操作")
.field("content","好好学习,天天向上")
.endObject(); //添加一个doc
IndexResponse response = client.prepareIndex("lib5","testadd",null)//id为null,由ES自己生成
.setSource(doc).get();
System.out.println(response.status());//打印添加是否成功
client.close();
}
返回结果:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "lib5",
"_type": "testadd",
"_id": "dympT2cBfvwZhJjhaFQ3",
"_score": 1,
"_source": {
"id": "1",
"title": "我在学习es插入操作",
"content": "好好学习,天天向上"
}
}
]
}
}
4、java 删除ES一个文档
//删除文档
@Test
public void test3() throws IOException {
//指定ES集群
Settings setting = Settings.builder().put("cluster.name",
"my-application").build(); //创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("127.0.0.1"),9300)); DeleteResponse response = client.prepareDelete("lib5","testadd","dympT2cBfvwZhJjhaFQ3")
.get();
System.out.println(response.status());//打印添加是否成功
client.close();
}
5、java 修改ES一个文档
我们先新增一个,然后根据它的ID来更新
//更新文档
@Test
public void test4() throws IOException, ExecutionException, InterruptedException {
//指定ES集群
Settings setting = Settings.builder().put("cluster.name",
"my-application").build(); //创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(
new TransportAddress(
InetAddress.getByName("127.0.0.1"),9300));
UpdateRequest request = new UpdateRequest();
request.index("lib5")
.type("testadd")
.id("eCm1T2cBfvwZhJjhF1SM")
.doc(
XContentFactory.jsonBuilder().startObject()
.field("title","我在学习ES的修改操作")
.field("newadd","新增字段")
.endObject()
);
UpdateResponse response = client.update(request).get(); System.out.println(response.status());//打印是否成功
client.close();
}
Es学习第十一课,使用java操作elasticsearch的更多相关文章
- java操作elasticsearch实现组合桶聚合
1.terms分组查询 //分组聚合 @Test public void test40() throws UnknownHostException{ //1.指定es集群 cluster.name 是 ...
- java操作elasticsearch实现query String
1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...
- java操作elasticsearch实现聚合查询
1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...
- java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询
1.前缀查询(prefix) //prefix前缀查询 @Test public void test15() throws UnknownHostException { //1.指定es集群 clus ...
- java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)
1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...
- java操作elasticsearch实现查询删除和查询所有
后期博客本人都只给出代码,具体的说明在代码中也有注释. 1.查询删除 //查询删除:将查询到的数据进行删除 @Test public void test8() throws UnknownHostEx ...
- java操作elasticsearch实现批量添加数据(bulk)
java操作elasticsearch实现批量添加主要使用了bulk 代码如下: //bulk批量操作(批量添加) @Test public void test7() throws IOExcepti ...
- java操作elasticsearch实现基本的增删改查操作
一.在进行java操作elasticsearch之前,请确认好集群的名称及对应的ES节点ip和端口 1.查看ES的集群名称 #进入elasticsearch.yml配置文件/opt/elasticse ...
- Java操作ElasticSearch之创建客户端连接
Java操作ElasticSearch之创建客户端连接 3 发布时间:『 2017-09-11 17:02』 博客类别:elasticsearch 阅读(3157) Java操作ElasticSe ...
随机推荐
- C# 调用delphi编写的dll
技术实现 如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可: #define LIBEXPORT_API extern "C" __declspe ...
- 如何安全修改cocoapods上的第三方代码
其实搞java的都知道maven管理,解决第三方代码修改的办法就是架一个服务器,把这些修改的库放在这里,然后再maven里配置哪些需要用本地仓库的.其实cocoapods也可以做本地包管理: 大致方法 ...
- (转)深入详解Java线程池——Executor框架
转:https://yq.aliyun.com/articles/633782?utm_content=m_1000015330 在Java中,使用线程来异步执行任务.Java线程的创建与销毁需要一定 ...
- 修改MySQL表varchar字段的小实验
将actor表的first_name的varchar(45) ,修改为varchar(60) [root@vhost1 ~]# mysql -uroot -p -S /mysqldata/tmp/my ...
- PHP的重载-使用魔术方法实现
摘录PHP官网对PHP重载的解释: PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法.我们是通过魔术方法(magic method ...
- Myeclipse优化配置
#utf8 (do not remove)#utf8 (do not remove)-startup../Common/plugins/org.eclipse.equinox.launcher_1.2 ...
- 【MM系列】SAP SAP的账期分析和操作
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP SAP的账期分析和操作 ...
- upc组队赛18 THE WORLD【时间模拟】
THE WORLD 题目链接 题目描述 The World can indicate world travel, particularly on a large scale. You mau be l ...
- Convolutional Neural Networks(3):Convolution and Channels
在CNN(1)和CNN(2)两篇文章中,主要说明的是CNN的基本架构和权值共享(Weight Sharing),本文则重点介绍卷积的部分. 首先,在卷积之前,我们的数据是4D的tensor(width ...
- C++学习笔记(三)--数组、字符串
1.数组,C++中不允许数组的下标值为变量,只能是常量或者常量表达式,必须先定义后使用.数组赋初值几种常见方式: int a[] = {1,2,3,4,5}: int a[4] = {2,1,3,4} ...