package esjava;

import org.elasticsearch.action.bulk.*;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.fieldstats.FieldStats;
import org.elasticsearch.action.get.GetRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.get.MultiGetItemResponse;
import org.elasticsearch.action.get.MultiGetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.unit.ByteSizeUnit;
import org.elasticsearch.common.unit.ByteSizeValue;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory; import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; /**
* Created by zhuzhiqiang on 2018/7/28.
*/
public class ESUtile {
static TransportClient client;
private IndexRequest source;
static {
Map<String, String> map = new HashMap<String, String>();
map.put("cluster.name", "es-cluster");
Settings.Builder settings = Settings.builder().put(map);
try {
client = TransportClient.builder().settings(settings).build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.0.108"), Integer.parseInt("9300")));
} catch (UnknownHostException e) {
e.printStackTrace();
}
} public static void testInfo() {
List<DiscoveryNode> nodes = client.connectedNodes();
for (DiscoveryNode node : nodes) {
System.out.println(node.getHostAddress());
}
} /**
* 组织json串, 方式1,直接拼接
*/
public static String createJson1() {
String json = "{" +
"\"user\":\"kimchy\"," +
"\"postDate\":\"2013-01-30\"," +
"\"message\":\"trying out Elasticsearch\"" +
"}";
return json;
} /**
* 使用map创建json
*/
public static Map<String, Object> createJson2() {
Map<String,Object> json = new HashMap<String, Object>();
json.put("user", "kimchyy");
json.put("postDate", new FieldStats.Date());
json.put("message", "trying out elasticsearch update");
return json;
} public XContentBuilder createJson4() throws Exception {
// 创建json对象, 其中一个创建json的方式
XContentBuilder source = XContentFactory.jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new FieldStats.Date())
.field("message", "trying to out ElasticSearch")
.endObject();
return source;
} //添加文档 public static void creat() throws Exception {
String json1 = createJson1();
// 存json入索引中
IndexResponse response = client.prepareIndex("twitter", "tweet", "4").setSource(json1).get();
// // 结果获取
String index = response.getIndex();
String type = response.getType();
String id = response.getId();
long version = response.getVersion();
boolean created = response.isCreated();
System.out.println(index + " : " + type + ": " + id + ": " + version + ": " + created);
} //更新文档 public static void update() throws Exception {
UpdateRequest updateRequest=new UpdateRequest();
updateRequest.index("twitter");
updateRequest.type("tweet");
updateRequest.id("3");
updateRequest.doc(XContentFactory.jsonBuilder()
.startObject()
// 对没有的字段添加, 对已有的字段替换
.field("gender", "maleww").endObject());
UpdateResponse updateResponse = client.update(updateRequest).get();
System.out.println(updateResponse.getIndex()+":"+updateResponse.getType()+
":"+updateResponse.getId()+":"+updateResponse.getVersion()+":"+updateResponse.isCreated()
); } //更新文档 public static void updateAndAdd() throws Exception {
// 设置查询条件, 查找不到则添加生效
IndexRequest indexRequest = new IndexRequest("twitter", "tweet", "5")
.source(XContentFactory.jsonBuilder()
.startObject()
.field("gender", "malewwq")
.endObject());
UpdateRequest updateRequest=new UpdateRequest();
updateRequest.index("twitter");
updateRequest.type("tweet");
updateRequest.id("5");
updateRequest.doc(XContentFactory.jsonBuilder()
.startObject()
// 对没有的字段添加, 对已有的字段替换
.field("user", "zzq").endObject());
UpdateResponse updateResponse = client.update(updateRequest.upsert(indexRequest)).get();
System.out.println(updateResponse.getIndex()+":"+updateResponse.getType()+
":"+updateResponse.getId()+":"+updateResponse.getVersion()+":"+updateResponse.isCreated()
); } //删除
public static void delete() throws Exception {
DeleteResponse deleteResponse = client.prepareDelete("twitter", "tweet", "4").get();
System.out.println(deleteResponse.getIndex()+":"+deleteResponse.getType()+
":"+deleteResponse.getId()+":"+deleteResponse.getVersion()+":"+deleteResponse.toString()
); } //查询 public static void search() throws Exception{
GetResponse getResponse = client.prepareGet("twitter", "tweet", "3").get();
System.out.println(getResponse.getSourceAsString()); }
/**
* 测试multi get api
* 从不同的index, type, 和id中获取
*/ public static void testMultiGet() {
MultiGetResponse multiGetResponse = client.prepareMultiGet()
.add("twitter", "tweet", "1")
.add("twitter", "tweet", "1", "3", "4")
.get(); for (MultiGetItemResponse itemResponse : multiGetResponse) {
GetResponse response = itemResponse.getResponse();
if (response.isExists()) {
String sourceAsString = response.getSourceAsString();
System.out.println(sourceAsString);
}
}
} /**
* bulk 批量执行
* 一次查询可以update 或 delete多个document
*/ public void testBulk() throws Exception {
BulkRequestBuilder bulkRequest = client.prepareBulk();
bulkRequest.add(client.prepareIndex("twitter", "tweet", "1")
.setSource(XContentFactory.jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new FieldStats.Date())
.field("message", "trying out Elasticsearch")
.endObject()));
bulkRequest.add(client.prepareIndex("twitter", "tweet", "2")
.setSource(XContentFactory.jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new FieldStats.Date())
.field("message", "another post")
.endObject()));
BulkResponse response = bulkRequest.get();
System.out.println(response.getHeaders());
} /**
* 使用bulk processor
* @throws Exception
*/ public void testBulkProcessor() throws Exception {
// 创建BulkPorcessor对象
BulkProcessor bulkProcessor = BulkProcessor.builder(client, new BulkProcessor.Listener() {
public void beforeBulk(long paramLong, BulkRequest paramBulkRequest) {
// TODO Auto-generated method stub
} // 执行出错时执行
public void afterBulk(long paramLong, BulkRequest paramBulkRequest, Throwable paramThrowable) {
// TODO Auto-generated method stub
} public void afterBulk(long paramLong, BulkRequest paramBulkRequest, BulkResponse paramBulkResponse) {
// TODO Auto-generated method stub
}
})
// 1w次请求执行一次bulk
.setBulkActions(10000)
// 1gb的数据刷新一次bulk
.setBulkSize(new ByteSizeValue(1, ByteSizeUnit.GB))
// 固定5s必须刷新一次
.setFlushInterval(TimeValue.timeValueSeconds(5))
// 并发请求数量, 0不并发, 1并发允许执行
.setConcurrentRequests(1)
// 设置退避, 100ms后执行, 最大请求3次
.setBackoffPolicy(
BackoffPolicy.exponentialBackoff(TimeValue.timeValueMillis(100), 3))
.build(); // 添加单次请求
bulkProcessor.add(new IndexRequest("twitter", "tweet", "1"));
bulkProcessor.add(new DeleteRequest("twitter", "tweet", "2")); // 关闭
bulkProcessor.awaitClose(10, TimeUnit.MINUTES);
// 或者
bulkProcessor.close();
}
}

es学习-java操作 2.4.0版本的更多相关文章

  1. java操作spark1.2.0

    虽然推荐的是scala,但是还是试一下 package org.admln.java7OperateSpark; import java.util.Arrays; import java.util.L ...

  2. 一脸懵逼学习Java操作Excel之POI(Apache POI)

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 1:下面简单的程序来创建一个空白Microsoft ...

  3. 大数据学习——java操作hdfs环境搭建以及环境测试

    1 新建一个maven项目 打印根目录下的文件的名字 添加pom依赖 pom.xml <?xml version="1.0" encoding="UTF-8&quo ...

  4. es之java操作插入文档

    4方式: . 使用json字符串直接创建 . 使用Map集合 . 使用第三方库来序列化 createDocumentBySerialize . 使用内置的帮助器XContentFactory.json ...

  5. 二、redis学习(java操作redis缓存的工具jedis)

  6. ES系列十五、ES常用Java Client API

    一.简介 1.先看ES的架构图 二.ES支持的客户端连接方式 1.REST API http请求,例如,浏览器请求get方法:利用Postman等工具发起REST请求:java 发起httpClien ...

  7. Es学习第十一课,使用java操作elasticsearch

    前面十节课我们已经把ES的基本概念和使用讲的差不多了,现在我们就用基于java来实际开发一个操作ES的小项目,带大家来一起练练手. 1.我们用IDEA创建一个maven项目 项目结构如上图所示,然后我 ...

  8. Hbase深入学习(六) Java操作HBase

    Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...

  9. Elasticsearch笔记五之java操作es

    Java操作es集群步骤1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 默认集群名为elasticsearch,如果集群名称和指定的不一致则在使用节点资源时会报错. 2:嗅探功能 ...

随机推荐

  1. java web 程序---登陆验证session。提示登陆

    loigin.jsp <%@ page language="java" import="java.util.*" pageEncoding="g ...

  2. java代码-------Runnable的用法

    总结:主要是实现Runnable接口就必须重写run()方法,然后需要创建Thread类的对象,再调用start()方法 package com.s.x; public class testRunna ...

  3. Condition分析

    Condition中提供了一组类似于Object中的监视器方法.与Lock配合可以完成等待通知模式. Condition只能通过Lock#newCondition()方法获取,所以Condition是 ...

  4. Android中preference标签的使用

    现在做公司任务的时候,经常会要去读Settings的源码,然后发现在xml文件中几乎全是用的preferenceScreen和preferenceCategory标签,很少有用布局和控件的,然后我就自 ...

  5. MySQL Connector/NET 使用小结(踩坑之路)

    背景描述 根据项目的需要,需连接MySQL获取数据. 首先,先了解一下项目的情况: 之前的代码是C#编写的的, 运行时:.NETFramework3.5. 由于项目已经部署上线,因此不能升级运行时,这 ...

  6. 设计模式——单例模式(C++)

    一: 饿汉式单例: 静态区初始化instance,然后通过getInstance返回.这种方式没有多线程的问题,是一种以空间换时间的方式,不管程序用不用,都会构造唯一的实例. #pragma once ...

  7. Asp.net mvc validaterequest无效的问题

    在普通的asp.net下,可以通过在页面上注明 validateRequest=“false" 这个选项来关闭请求对注入攻击的验证,但在mvc下则不行.而且,在asp.net 4.0下,哪怕 ...

  8. 关于Spring的Quartz的xml配置的例子

    <span style="font-size:16px"></span><h3><span style="font-family ...

  9. 28_java之mysql的CRUD

    01数据库概念 * A: 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据 ...

  10. 【Oracle】Oracle透明网关访问MSSQLServer

             Oracle 数据库的透明网关 ( transparent gateway )是这样的一个接口:通过它,我们可以 sqlplus 操纵其他数据库,如 MS SQLServer . s ...