package com.ast.util;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.action.admin.indices.exists.types.TypesExistsRequest;
import org.elasticsearch.action.admin.indices.exists.types.TypesExistsResponse;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.deletebyquery.DeleteByQueryAction;
import org.elasticsearch.action.deletebyquery.DeleteByQueryRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.client.IndicesAdminClient;
import org.elasticsearch.client.Requests;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.QueryStringQueryBuilder;
import org.elasticsearch.plugin.deletebyquery.DeleteByQueryPlugin;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.highlight.HighlightField;
import com.ast.controller.ElasticSearchHandler;
import com.ast.model.Blog;
/**
* 该类使用原则: try { ESUtil.openClient(); }finally{ ESUtil.closeClient(); }
* */
@SuppressWarnings(value = { "unchecked", "rawtypes" })
public class ESUtil {
private static final int Return_NotExist = -1;// 不存在
private static final int Return_Failure = 0;// 失败
private static final int Return_Success = 1;// 成功
private static String clusterName = "elasticsearch";
private static final String[] ips = { "192.168.159.128", "192.168.159.129",
"192.168.159.131" };
private static final int[] ports = { 9300, 9300, 9300 };
private static boolean clientTransportSniff = true;
private static TransportClient client;
private static IndicesAdminClient adminClient;
/** 取得实例 */
public static synchronized TransportClient getTransportClient() {
return client;
}
/** 打开客户端 */
public static void openClient() throws UnknownHostException {
if (client == null) {
synchronized (ElasticSearchHandler.class) {
if (client == null) {
Settings settings = Settings
.settingsBuilder()
.put("cluster.name", clusterName)
.put("client.transport.sniff", clientTransportSniff)
.build();
client = TransportClient.builder().settings(settings)
.addPlugin(DeleteByQueryPlugin.class)// 批量删除
.build();
for (int i = 0; i < ips.length; i++) {
addNode(ips[i], ports[i]);
}
adminClient = client.admin().indices();
}
}
}
}
/** 关闭客户端 */
public static synchronized void closeClient() {
if (client != null) {
client.close();
}
}
/** 为集群添加新的节点 */
public static synchronized void addNode(String ip, int port)
throws UnknownHostException {
client.addTransportAddress(new InetSocketTransportAddress(InetAddress
.getByName(ip), port));
}
/** 删除集群中的某个节点 */
public static synchronized void removeNode(String ip, int port)
throws UnknownHostException {
client.removeTransportAddress(new InetSocketTransportAddress(
InetAddress.getByName(ip), port));
}
/** 创建索引,是否需要覆盖原索引 */
public static synchronized void createIndex(String index, boolean overried) {
if (index != null) {
boolean exits = adminClient.prepareExists(index).execute()
.actionGet().isExists();
if (exits && !overried) {
return;
}
if (exits) {
DeleteIndexRequest request = new DeleteIndexRequest(index);
adminClient.delete(request).actionGet();
}
adminClient.prepareCreate(index).execute().actionGet();
}
}
// 判断索引是否存在 传入参数为索引库名称
public static synchronized boolean isExistIndex(String index) {
boolean bl = false;
if (index != null) {
IndicesExistsResponse response = adminClient.exists(
new IndicesExistsRequest().indices(new String[] { index }))
.actionGet();
bl = response.isExists();
}
return bl;
}
/**
* 判断指定的索引的类型是否存在 只有同一个 index 的中的 type 都有类似的映射 (mapping) 时,才应该使用 type
*/
public static synchronized boolean isExistType(String index, String type) {
boolean bl = false;
if (index != null && type != null) {
TypesExistsResponse response = adminClient.typesExists(
new TypesExistsRequest(new String[] { index }, type))
.actionGet();
bl = response.isExists();
}
return bl;
}
/**
* 没有index则创建;添加数据到Elasticsearch
*/
public static synchronized boolean saveDocument(String index, String type,
String idName, JSONObject json) {
List list = new ArrayList();
list.add(json);
return saveDocuments(index, type, idName, list);
}
/**
* 没有index则创建 没有指定idName那就让Elasticsearch自动生成id值
* */
public static synchronized boolean saveDocuments(String index, String type,
String idName, List listData) {
boolean bl = false;
if (index != null && type != null && listData != null
&& listData.size() > 0) {
BulkRequestBuilder bulkRequest = client.prepareBulk().setRefresh(
true);
for (Object object : listData) {
JSONObject json = JSONObject.fromObject(object);
IndexRequestBuilder lrb = null;
if (StringUtils.isBlank(idName)) {
lrb = client.prepareIndex(index, type).setSource(json);
} else {
String idValue = json.optString(idName);
lrb = client.prepareIndex(index, type, idValue).setSource(
json);
}
bulkRequest.add(lrb);
}
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
if (!bulkResponse.hasFailures()) {// 保存成功
bulkRequest = client.prepareBulk();
bl = true;
}
}
return bl;
}
/**
* 创建mapping 访问:http://192.168.159.128:9200/blog/blog/_mapping
*/
public static synchronized int createMapping(String index, String type,
XContentBuilder getMapping) {
int i = Return_Failure;
if (isExistIndex(index)) {// 必须存在索引库,可以不存在类型
PutMappingRequest mapping = Requests.putMappingRequest(index)
.type(type).source(getMapping);
PutMappingResponse response = adminClient.putMapping(mapping)
.actionGet();
if (response.isAcknowledged())
i = Return_Success;
} else {
i = Return_NotExist;
}
return i;
}
/**
* 指定域、类型、分词器
*/
public static synchronized XContentBuilder getMapping(String index)
throws IOExc
没有合适的资源?快使用搜索试试~ 我知道了~
javautil工具类大全
共82个文件
java:51个
jar:22个
xml:6个
5星 · 超过95%的资源 需积分: 32 98 下载量 153 浏览量
2017-08-25
15:09:12
上传
评论 6
收藏 15.67MB ZIP 举报
温馨提示
自己总结的java工具类,包括异常、文件、字符串、时间、http、搜索、进程、poi、反射、邮件、静态页面、spring、redis、权限递归、加解密,签名、校验码、json等等
资源推荐
资源详情
资源评论
收起资源包目录
java工具类.java.zip (82个子文件)
java工具类.java
权限树
PrivilegeTreeUtil.java 4KB
PermissionTree.java 2KB
Http
CookieUtils.java 8KB
HttpResult.java 665B
HttpClientUtil.java 6KB
HttpConnectEvictor.java 2KB
Redis
JedisCliect.zip 1KB
RedisClient.java 5KB
字符串 数字 时间
RandomUtils.java 3KB
时间
DateUtil.java 6KB
StringUtil.java 9KB
Json
pom.xml 3KB
JsonUtils.java 3KB
Math
NumberFormat.java 1KB
Count.java 4KB
CountAge.java 696B
HexUtil.java 9KB
UrlEncode
UrlDecoder.java 3KB
校验码
CaptchaUtil.java 3KB
CheckCodeUtil.java 2KB
比较器
MyComparator.java 3KB
加密签名
EncryptCoderUtils.java 2KB
DescryptCoderUtils.java 2KB
RSAUtils.java 3KB
Md5Utils.java 4KB
RSACoder.java 6KB
POI
PoiUtil.java 15KB
邮件
MailUtils.java 5KB
Spring
SpringUtils.java 2KB
页面
EasyUI
EasyUIResult.java 1KB
ExtJS
分页
cutPageJDBC.zip 2KB
Hibernate
PageBean.java 3KB
HqlHelper.java 4KB
HqlHelperTest.java 2KB
JPA
Pageable.java 5KB
Page.java 3KB
VelocityUtil.java 2KB
反射
ReflectUtil.java 4KB
进程
KillProcessUtil.java 4KB
File
属性文件
slf4j-log4j12-1.6.1.jar 10KB
slf4j-api-1.6.1.jar 25KB
PropertyUtil.java 4KB
private.properties 100B
log4j-1.2.17.jar 478KB
获取文件字符集
jar
pom.xml 2KB
jchardet-1.0.jar 26KB
log4j-1.2.17.jar 478KB
FileCharsetUtil.java 3KB
上传下载
ThunderUtil.java 4KB
PicUploadResult.java 788B
FtpUpDownUtil.java 5KB
FastDFSClient.java 2KB
DownloadUtil.java 4KB
文件压缩
ZipUtil.java 8KB
RarUtil.java 1KB
jar
pom.xml 855B
zip4j-1.3.1.jar 128KB
CompressUtil.java 11KB
目录
DirectoryUtil.java 3KB
读取文件内容
jar
pom.xml 2KB
dom4j-1.6.1.jar 307KB
poi-examples-3.9.jar 302KB
xml-apis-1.0.b2.jar 107KB
fontbox-0.1.0.jar 62KB
poi-ooxml-schemas-3.9.jar 4.58MB
pull-parser-2.1.10.jar 51KB
jempbox-0.2.0.jar 42KB
poi-3.9.jar 1.78MB
commons-codec-1.5.jar 71KB
bcprov-jdk14-136.jar 1.34MB
bcmail-jdk14-136.jar 185KB
xmlbeans-2.3.0.jar 2.54MB
poi-ooxml-3.9.jar 915KB
poi-scratchpad-3.9.jar 1.17MB
pdfbox-0.7.3.jar 3.17MB
stax-api-1.0.1.jar 26KB
FileToStringUtil.java 9KB
全文检索
ElasticSearch
pom.xml 3KB
ESUtil.java 21KB
Lucene
pom.xml 3KB
LuceneUtil4.10.2.java 19KB
Exception
ExceptionUtil.java 370B
共 82 条
- 1
资源评论
- zjbin122019-06-05挺好用的工具类,就是要比较高的积分,有些方法比较旧
zhouanan511
- 粉丝: 2
- 资源: 41
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python大作业:音乐播放软件(爬虫+可视化+数据分析+数据库)
- 课程设计-python爬虫-爬取日报,爬取日报文章后存储到本地,附带源代码+课程设计报告
- 软件和信息技术服务行业投资与前景预测.pptx
- 课程设计-基于SpringBoot + Mybatis+python爬虫NBA球员数据爬取可视化+源代码+文档+sql+效果图
- 软件品质管理系列二项目策划规范.doc
- 基于TensorFlow+PyQt+GUI的酒店评论情感分析,支持分析本地数据文件和网络爬取数据分析+源代码+文档说明+安装教程
- 软件定义无线电中的模拟电路测试技术.pptx
- 软件开发协议(作为技术开发合同附件).doc
- 软件开发和咨询行业技术趋势分析.pptx
- 软件测试题详解及答案.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功