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 ...
随机推荐
- php面试专题---13、AJAX基础内容考点
php面试专题---13.AJAX基础内容考点 一.总结 一句话总结: ajax对提升用户速度,缓解服务器压力方面也是很有可取之处的,毕竟传递的数据少了 1.AJAX基础概念? Asynchronou ...
- php的URL查询字符串解析函数
URL查询字符串格式:Data[650][BLN]=40002307312&Data[650][Status]=電聯無人接聽. 解析这种数据使用函数:parse_str(). parse_st ...
- 牛客提高D5t1 deco的abs
分析 傻子题? 对d取模后随便贪心即可 代码 #include<iostream> #include<cstdio> #include<cstring> #incl ...
- brdd 惰性执行 mapreduce 提取指定类型值 WebUi 作业信息 全局临时视图 pyspark scala spark 安装
[rdd 惰性执行] 为了提高计算效率 spark 采用了哪些机制 1-rdd 基于分布式内存数据集进行运算 2-lazy evaluation :惰性执行,即rdd的变换操作并不是在运行该代码时立 ...
- 软件-JMeter:JMeter 百科
ylbtech-软件-JMeter:JMeter 百科 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到 ...
- English-taxonomy
域.界.门.纲.目.科.属.种 Domain, Kingdom, Phylum, Class, Order, Family, Genus, Species
- http代理工具delphi源码
http://www.caihongnet.com/content/xingyexinwen/2013/0721/730.html http代理工具delphi源码 以下代码在 DELPHI7+IND ...
- Grafana+Prometheus系统监控之Redis
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵守B ...
- Unity3D架构之PureMVC
之前了解过UI实现框架大多是用MVC架构的,才听说有这么一个基于MVC的跨平台开源框架叫PureMVC,前几天用到了做了一下,写一写分析总结官网位置:http://puremvc.org/ PureM ...
- [Python3 填坑] 013 几个类相关函数的举例
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 issubclass() 2.2 isinstance() 2.3 hasattr() 2.4 getattr() 2.5 setatt ...