网上找了很久没找到2.4.X 想要的java api 工具

自己写了一个,分享一下

导入所需的jar

<!-- ElasticSearch begin -->
<dependency>
<groupId>com.xinyi.search</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.4.6</version>
</dependency>

<dependency>
<groupId>com.xinyi.search</groupId>
<artifactId>lucene-core</artifactId>
<version>5.5.4</version>
</dependency>
<dependency>
<groupId>com.xinyi.search</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>5.5.4</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.4</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<dependency>
<groupId>com.twitter</groupId>
<artifactId>jsr166e</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.tdunning</groupId>
<artifactId>t-digest</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.xinyi.search</groupId>
<artifactId>netty</artifactId>
<version>3.10.6.Final</version>
</dependency>
<dependency>
<groupId>com.xinyi.search</groupId>
<artifactId>hppc</artifactId>
<version>0.7.1</version>
</dependency>
<dependency>
<groupId>com.xinyi.search</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>com.xinyi.search</groupId>
<artifactId>jackson-dataformat-smile</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>com.xinyi.search</groupId>
<artifactId>compress-lzf</artifactId>
<version>1.0.2</version>
</dependency>

2 java工具类

package com.xinyi.es.service.impl;

import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequestBuilder;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
* @Author: liang.he
* @Desc: ES-2.4.6相关测试
* @Date: Created in 15:58 2018/5/18
*/
@Service
public class EsServiceImpl {

@Value("${application.es.clusterName}")
private String clusterName;

@Value("${application.es.ip}")
private String esIp;

@Value("${application.es.port}")
private Integer esPort;

private TransportClient client;

@PostConstruct
public TransportClient getClient() {

if(client!=null){
  return client;
}
Settings settings = Settings.settingsBuilder()
.put("cluster.name", clusterName).build();
try {
  client = TransportClient.builder().settings(settings).build()
  .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(esIp), esPort));
} catch (Exception e) {
  System.out.println("clusterName or ip or port is Error!");
  e.printStackTrace();
}
return client;

}

public List<Map<String, Object>> query(String indexName,String typeName,String filedName,String value,Integer pageIndex,Integer pageSize) {

QueryBuilder qb = QueryBuilders.matchPhraseQuery(filedName, value);
SearchResponse response = client.prepareSearch(indexName)
  .setTypes(typeName).setQuery(qb).setFrom(pageIndex).setSize(pageSize).execute().actionGet();
List<Map<String, Object>> result= new ArrayList<Map<String,Object>>();
for (SearchHit hit : response.getHits().getHits()) {
  result.add(hit.getSource());
}
return result;

}

  public int insertEs(String indexName,String typeName,Map<String,Object> source) {
    BulkRequestBuilder bulkRequest = client.prepareBulk();
    bulkRequest.add(client.prepareIndex(indexName,typeName).setSource(source));
    BulkResponse response = bulkRequest.get();
    if(response.hasFailures()){
      System.out.println("数据插入失败"+source);
      return 0;
    }
    return 1;
  }
  public int deleteById(String indexName,String typeName,String id){
    try {
      DeleteRequestBuilder deleteRequest = client.prepareDelete(indexName,typeName,id);
      DeleteResponse response = deleteRequest.execute().actionGet();
      response.getId();
    }catch (Exception e){
      e.printStackTrace();
      return 0;
    }
    return 1;
  }

  public void close(){
    if (client!=null){
      client.close();
    }
  }
}

es2.4.6 java api 工具类的更多相关文章

  1. Java并发工具类 - CountDownLatch

    Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...

  2. 基于AQS实现的Java并发工具类

    本文主要介绍一下基于AQS实现的Java并发工具类的作用,然后简单谈一下该工具类的实现原理.其实都是AQS的相关知识,只不过在AQS上包装了一下而已.本文也是基于您在有AQS的相关知识基础上,进行讲解 ...

  3. Java Properties工具类详解

    1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...

  4. Java json工具类,jackson工具类,ObjectMapper工具类

    Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...

  5. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  6. Java API 常用类(一)

    Java API 常用类 super类详解 "super"关键字代表父类对象.通过使用super关键字,可以访问父类的属性或方法,也可以在子类构造方法中调用父类的构造方法,以便初始 ...

  7. MinerUtil.java 爬虫工具类

    MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.File ...

  8. MinerDB.java 数据库工具类

    MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...

  9. 小记Java时间工具类

    小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...

随机推荐

  1. Android Studio布局等XML文件怎么改都恢复原状的问题

    编译时,XML布局文件报错,点击链接进去改,怎么改,一编译就恢复原状,这是什么原因,问题出在点击错误链接进的是中间生成XML文件,这个文件改动是没用的,需要改动原始layout文件才会生效.

  2. 几个大型网站的Feeds(Timeline)设计简单对比

    https://mp.weixin.qq.com/s?__biz=MjM5NzQ3ODAwMQ==&mid=404465806&idx=1&sn=3a68a786138538f ...

  3. 实现MyArrayList类深入理解ArrayList

    ArrayList简介 ArrayList是一个动态数组,Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处. MyArray ...

  4. 构建基础的SpringMVC+Hibernate+SpringloC项目

    一. SpringMVC 阅读我的上一篇文章<使用MyEclipse2015构建SpringMVC项目>,知道基本的构建方法,先构建一个纯springmvc项目,再对web.xml按照本文 ...

  5. cocos2dx中的坐标系统

    一. (1)OpenGL坐标系 Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系.该坐标系原点在屏幕左下角,x轴向右,y轴向上. (2)屏幕坐标系 屏幕坐标系 ...

  6. ORA-01658: 无法为表空间 YJXT 中的段创建 INITIAL 区

    oracle 用imp导入数据的时候报错:遇到ORACLE 错误1658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区 解决办法:需要添加数据文件而不是新增表空间,代码如下: alt ...

  7. Python中Json对象处理的jsonpath-rw

    这两天在写一个爬虫,需要从网站返回的json数据提取一些有用的数据. 向url发起请求,返回的是response,在python3中,response.content是二进制bytes类型的,需要用d ...

  8. (Lesson2)根据类名称和属性获得元素-JavaScript面向对象

    描述:在编写选择器的时候遇到的一根问题,我需要实现Jquery的选择器功能,第一个根据ID获取Element非常简单,第二个根据类(class)去获取Element集合,这个相对复杂,而根据name和 ...

  9. 关于内核转储(core dump)的设置方法

    原作者:http://blog.csdn.net/wj_j2ee/article/details/7161586 1. 内核转储作用 (1) 内核转储的最大好处是能够保存问题发生时的状态. (2) 只 ...

  10. SpringMVC中Controller的方法返回值

    1. 返回ModelAndView对象 controller方法中定义ModelAndView对象并返回,对象中可添加model数据.指定view. 实例 @RequestMapping(" ...