前面十节课我们已经把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的更多相关文章

  1. java操作elasticsearch实现组合桶聚合

    1.terms分组查询 //分组聚合 @Test public void test40() throws UnknownHostException{ //1.指定es集群 cluster.name 是 ...

  2. java操作elasticsearch实现query String

    1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...

  3. java操作elasticsearch实现聚合查询

    1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...

  4. java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询

    1.前缀查询(prefix) //prefix前缀查询 @Test public void test15() throws UnknownHostException { //1.指定es集群 clus ...

  5. java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)

    1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...

  6. java操作elasticsearch实现查询删除和查询所有

    后期博客本人都只给出代码,具体的说明在代码中也有注释. 1.查询删除 //查询删除:将查询到的数据进行删除 @Test public void test8() throws UnknownHostEx ...

  7. java操作elasticsearch实现批量添加数据(bulk)

    java操作elasticsearch实现批量添加主要使用了bulk 代码如下: //bulk批量操作(批量添加) @Test public void test7() throws IOExcepti ...

  8. java操作elasticsearch实现基本的增删改查操作

    一.在进行java操作elasticsearch之前,请确认好集群的名称及对应的ES节点ip和端口 1.查看ES的集群名称 #进入elasticsearch.yml配置文件/opt/elasticse ...

  9. Java操作ElasticSearch之创建客户端连接

    Java操作ElasticSearch之创建客户端连接 3 发布时间:『 2017-09-11 17:02』  博客类别:elasticsearch  阅读(3157) Java操作ElasticSe ...

随机推荐

  1. luoguP3806 【模板】点分治1

    #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) #define ...

  2. Maven私服:Docker安装nexus3

    查找nexus3镜像 docker search nexus   拉取nexus3镜像 docker pull docker.io/sonatype/nexus3 查看镜像 docker images ...

  3. php面试专题---20、MySQL的安全性考点

    php面试专题---20.MySQL的安全性考点 一.总结 一句话总结: 还是得多看视频,教程看的浮光掠影,容易get不到重点:比如预处理防sql注入之前是挺熟,后面就忘记了,而且看文章get不到点 ...

  4. P1582倒水

    推了一个多小时的式子,ac后一看题解,7行代码搞定 emmmm我还是太菜了 传送 蒟蒻解法: 不管怎么倒水,最终所有瓶子里面的水的数量一定可以用2k表示出来. n最终可以合并成几个瓶子呢? 我们可以把 ...

  5. DB-MD:MD/主数据

    ylbtech-DB-MD:MD/主数据 主数据(MD Master Data)指系统间共享数据(例如,客户.供应商.账户和组织部门相关数据).与记录业务活动,波动较大的交易数据相比,主数据(也称基准 ...

  6. 使用 Select2 下拉框实现复选

    使用 Select2 下拉框实现复选 <!DOCTYPE html> <html> <head> <meta http-equiv="Content ...

  7. IDEA activate-power-mode插件

    一 下载activate-power-mode插件 方法1:插件库下载: 地址:http://plugins.jetbrains.com/plugin/8330-activate-power-mode ...

  8. CodeForce-1196D2-RGB Substring (hard version)

    原题链接 题目大意与上题完全一样,只是数据规模更大. 思路: 再用上题的暴力肯定TLE,所以需要优化一下搜索过程.上一题我们是外层遍历n,内层遍历3种情况.这题我们外层遍历3种情况,内层遍历数组,记录 ...

  9. Naive Bayes Algorithm And Laplace Smoothing

    朴素贝叶斯算法(Naive Bayes)适用于在Training Set中,输入X和输出Y都是离散型的情况.如果输入X为连续,输出Y为离散,我们考虑使用逻辑回归(Logistic Regression ...

  10. EasyUI:Cannot read property 'width' of null

    最近在使用EasyUI DataGrid来做前端的报表开发,遇到了这个报错: Uncaught TypeError: Cannot read property 'width' of null 在网上查 ...