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就是和数据库打 ...
随机推荐
- jdk8- list操作
本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. student类 public class Student { private String age; ...
- 采用完成端口(IOCP)实现高性能网络服务器(Windows c++版)
前言 TCP\IP已成为业界通讯标准.现在越来越多的程序需要联网.网络系统分为服务端和客户端,也就是c\s模式(client \ server).client一般有一个或少数几个连接:server则需 ...
- epoll的ET和LT模式
epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT). 在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用 ...
- SPL接口学习总结
迭代器接口描述(接口在C里定义,这只是描述) interface Iterator { public function current(); public function key(); public ...
- String,StringBuilder, StringBuffer
String:适用于少量的字符串操作的情况 StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况 StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
- Java--实现单点登录
1 什么是单点登陆 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用 ...
- webpack4 系列教程(十): 图片处理汇总
多图预警!!! 此篇博文共 5 张图(托管在 GitHub),国内用户请移步>>>原文. 或者来我的小站哦 0. 课程源码和资料 本次课程的代码目录(如下图所示): >> ...
- Java集合之LinkedHashMap源码分析
概述 HashMap是无序的, 即put的顺序与遍历顺序不保证一样. LinkedHashMap是HashMap的一个子类, 它通过重写父类的相关方法, 实现自己的功能. 它保留插入的顺序. 如果需要 ...
- HDU4278
Faulty Odometer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- React 入门学习笔记整理(三)—— 组件
1.定义组件 1)函数组件 function GreateH(props){ return <div> <h2>hello,{props.name}</h2> &l ...