java操作elasticsearch实现基本的增删改查操作
一、在进行java操作elasticsearch之前,请确认好集群的名称及对应的ES节点ip和端口
1、查看ES的集群名称
#进入elasticsearch.yml配置文件
/opt/elasticsearch-6.4.3/config
vim elasticsearch.yml
2、查询ip
二、根据文档id查询数据
/**
*
*/
package com.cyb.test; import java.net.InetAddress;
import java.net.UnknownHostException; 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; /**
* @Title: EsDemo.java
* @Package:com.cyb.test
* @Description:
* @author:陈远波
* @date:2019年1月20日
* @version:V1.0
*/
public class EsDemo { //从es中查询数据
@Test
public void test1() throws UnknownHostException {
//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();
//2.创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
//实现数据查询(指定_id查询) 参数分别是 索引名,类型名 id
GetResponse response = client.prepareGet("lib3","user","1").execute().actionGet();
//得到查询出的数据
System.out.println(response.getSourceAsString());//打印出json数据
client.close();//关闭客户端 } }
在kibana中查询id为1的结果为:
java控制台输出的结果为:
三、插入数据
1、在插入数据之前,需要使用kibana在es中建立索引和定义好字段等信息
PUT /index1
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 0
},
"mappings": {
"blog":{
"properties":{
"id":{
"type":"long"
},
"title":{
"type":"text",
"analyzer":"ik_max_word"
},
"content":{
"type":"text",
"analyzer":"ik_max_word"
},
"postdate":{
"type":"date"
},
"url":{
"type":"text"
}
}
}
} }
2、java实现添加
//插入数据
@Test
public void test2() throws IOException {
//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();
//2.创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
//将数据转换成文档的格式(后期可以使用java对象,将数据转换成json对象就可以了)
XContentBuilder doContentBuilder=XContentFactory.jsonBuilder()
.startObject()
.field("id", "1") //字段名 : 值
.field("title", "java设计模式之装饰模式")
.field("content", "在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能")
.field("postdate", "2018-05-20")
.field("url", "https://www.cnblogs.com/chenyuanbo/")
.endObject();
//添加文档 index1:索引名 blog:类型 10:id
//.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) 代表插入成功后立即刷新,因为ES中插入数据默认分片要1秒钟后再刷新
IndexResponse response = client.prepareIndex("index1","blog","10")
.setSource(doContentBuilder).setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).get();
System.out.println(response.status());
//打印出CREATED 表示添加成功
}
三、java实现删除
//删除文档
@Test
public void test3() throws UnknownHostException {
Settings settings = Settings.builder().put("cluster.name", "my-application").build();
//2.创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
DeleteResponse response = client.prepareDelete("index1","blog","10").get();
System.out.println(response.status());
//控制台打印出OK代表删除成功
}
四、java实现修改数据
1、对指定字段进行修改
//修改数据(指定字段进行修改)
@Test
public void test4() throws IOException, InterruptedException, ExecutionException {
Settings settings = Settings.builder().put("cluster.name", "my-application").build();
//2.创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
UpdateRequest request = new UpdateRequest();
request.index("index1") //索引名
.type("blog") //类型
.id("10")//id
.doc(
XContentFactory.jsonBuilder()
.startObject()
.field("title", "单例设计模式")//要修改的字段 及字段值
.endObject()
);
UpdateResponse response= client.update(request).get();
System.out.println(response.status());
//控制台出现OK 代表更新成功
}
2、使用upsert修改
upsert修改用法:修改文章存在,执行修改,不存在则执行插入
//upsert 修改用法:修改文章存在,执行修改,不存在则执行插入
@Test
public void test5() throws IOException, InterruptedException, ExecutionException {
Settings settings = Settings.builder().put("cluster.name", "my-application").build();
//2.创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
IndexRequest request1 = new IndexRequest("index1","blog","8").source(
XContentFactory.jsonBuilder()
.startObject()
.field("id", "2") //字段名 : 值
.field("title", "工厂模式")
.field("content", "静态工厂,实例工厂")
.field("postdate", "2018-05-20")
.field("url", "https://www.cnblogs.com/chenyuanbo/")
.endObject()
);
UpdateRequest request2 = new UpdateRequest("index1","blog","8").doc(
XContentFactory.jsonBuilder().startObject()
.field("title", "设计模式")
.endObject()
).upsert(request1);
UpdateResponse response = client.update(request2).get();
System.out.println(response.status());
}
以上是java对elasticsearch的基本操作,下一篇博客本人将书写bulk的批量操作。对ES感兴趣的朋友可以加个关注,另转发请说明出处,本人的博客地址为:https://www.cnblogs.com/chenyuanbo/
技术在于交流!
java操作elasticsearch实现基本的增删改查操作的更多相关文章
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
- java+jsp+sqlserver实现简单的增删改查操作 连接数据库代码
1,网站系统开发需要掌握的技术 (1)网页设计语言,html语言css语言等 (2)Java语言 (3)数据库 (4)等 2,源程序代码 (1) 连接数据库代码 package com.jaovo.m ...
- Java连接本地MySQL数据库进行增删改查操作
package Dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStat ...
- java连接mysql数据库 三 实现增删改查操作
同以前一样,先写一个数据库打开和关闭操作类 public class DBConnection { String driver = "com.mysql.jdbc.Driver"; ...
- 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧
通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...
- Elasticsearch 单模式下API的增删改查操作
<pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...
- Elasticsearch学习系列之单模式下API的增删改查操作
这里我们通过Elasticsearch的marvel插件实现单模式下API的增删改查操作 索引的初始化操作 创建索引之前可以对索引进行初始化操作,比如先指定shard数量以及replicas的数量 代 ...
- 05_Elasticsearch 单模式下API的增删改查操作
05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
随机推荐
- IntelliJ Idea编译报错:javacTask: 源发行版 1.7 需要目标发行版 1.7
1.项目编译时,IntelliJ Idea编译报错:javacTask: 源发行版 1.7 需要目标发行版 1.7很显然是jdk版本冲突,于是查阅资料,作如下修改:File-->Other Se ...
- 基于 JDK 的动态代理机制
『动态代理』其实源于设计模式中的代理模式,而代理模式就是使用代理对象完成用户请求,屏蔽用户对真实对象的访问. 举个最简单的例子,比如我们想要「FQ」访问国外网站,因为我们并没有墙掉所有国外的 IP,所 ...
- JavaWeb学习(二)———Tomcat服务器学习和使用(一)
一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...
- httpd配置文件httpd.conf规则说明和一些基本指令
apache httpd系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 本文主要介绍的是httpd的配置文件,包括一些最基本的指令.配置规 ...
- KVM虚拟化原理与基础应用示例
一.KVM简介 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的调 ...
- 安装Eclipse时遇到”java was started but returned exit code = 13“如何解决?
有的时候运行开发工具时会出现java was started but returned exit code = 13......的提示,绝大多数的问题都是版本问题: 我们可以打开命令行工具cmd 输入 ...
- Java并发编程:什么是CAS?这回总算知道了
无锁的思想 众所周知,Java中对并发控制的最常见方法就是锁,锁能保证同一时刻只能有一个线程访问临界区的资源,从而实现线程安全.然而,锁虽然有效,但采用的是一种悲观的策略.它假设每一次对临界区资源的访 ...
- Java坦克大战(三)
关于这个坦克大战的项目是在学习Java基础的时候,拿来练习的最近看到这些代码,感觉很亲切,就把他们都复制下来,编辑成博客.回首看去,Java基础的学习确实应该建立在找项目练习上,这样才能将学到的基础知 ...
- html页面边框的另一种写法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- java设计模式-----12、外观模式
Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种.Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面.这个一致的简单的界面被称作facade. ...