版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangqing84411433/article/details/86300431
系统环境:
系统:windows 10 64位
JDK :1.7.0_80
开发工具:Eclipse Luna 4.4
搜索引擎:Elasticsearch 2.3.5
IK中文分词器:1.9.5
Node.js:node-v10.14.2-x64.msi(64位)
HEAD插件:master版本
建立Maven项目
一、Maven依赖
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.3.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.7</version>
</dependency>
二、Java代码
package easticsearch;
import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
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.elasticsearch.search.SearchHits;
import com.alibaba.fastjson.JSON;
public class Elasticsearch {
private static TransportClient client = null;
/**
* es index
*/
private static final String ES_INDEX = "database_test";
/**
* es type
*/
private static final String ES_TYPE = "user";
//创建客户端
private static void createClient() throws Exception {
if (client == null) {
synchronized (Elasticsearch.class) {
Settings settings = Settings.settingsBuilder().put("cluster.name", "elasticsearch").build();
client = TransportClient.builder().settings(settings).build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
System.out.println("启动客户端:"+client);//启动客户端:org.elasticsearch.client.transport.TransportClient@16e2a4c8
}
}
}
//获取日期 年月日 时分秒
public static String tranTime(){
return new SimpleDateFormat("YY-MM-DD HH:mm:ss").format(new Date());
}
/**
* 创建es库并导入数据
*/
private static String createIndex() {
//json字符串 {"username":"zhengyong","postDate":"19-01-11 10:56:04","message":"create"}
String json = "{" + "\"username\":\"zhengyong\"," + "\"postDate\":\"" + tranTime() + "\","
+ "\"message\":\"create\"" + "}";
IndexResponse response = client.prepareIndex(ES_INDEX, ES_TYPE).setSource(json).get();
System.out.println(String.format("create index response: %s", response.toString()));
return response.getId();
}
/**
* 根据_id获取数据
* @param _id
*/
private static GetResponse getDataResponse(String _id) {
GetResponse response = client.prepareGet(ES_INDEX, ES_TYPE, _id).get();
System.out.println(String.format("get data response: %s", JSON.toJSONString(response.getSource())));
return response;
}
/**
* 根据查询条件查询结果集
* @param queryBuilder
* @return
*/
private static List<String> queryDataList(QueryBuilder queryBuilder) {
SearchResponse sResponse = client.prepareSearch(ES_INDEX).setTypes(ES_TYPE).setQuery(queryBuilder).setSize(1000).execute().actionGet();
SearchHits hits = sResponse.getHits();
List<String> list = new ArrayList<String>();
SearchHit[] hitArray = hits.hits();
Map<String, Object> map;
for (SearchHit hit : hitArray) {
map = hit.getSource();
String username = (String) map.get("username");
String postDate = (String) map.get("postDate");
String message = (String) map.get("message");
StringBuilder br = new StringBuilder();
br.append(username).append("_").append(message).append("_").append(postDate);
list.add(br.toString());
}
System.out.println(String.format("query data count=%s, list : %s", list.size(), JSON.toJSONString(list)));
return list;
}
/**
* 根据_id删除数据
* @param _id
* @return
*/
private static DeleteResponse deleteDataResponse(String _id) {
DeleteResponse response = client.prepareDelete(ES_INDEX, ES_TYPE, _id).get();
System.out.println(String.format("delete data response: %s", JSON.toJSONString(response)));
return response;
}
/**
* 根据_id更新数据
* @param _id
* @throws Exception
*/
private static void updateData(String _id) throws Exception {
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index(ES_INDEX);
updateRequest.type(ES_TYPE);
updateRequest.id(_id);
String json = "{" + "\"username\":\"lisi\"," + "\"postDate\":\"" + tranTime() + "\","
+ "\"message\":\"update\"" + "}";
updateRequest.doc(json);
client.update(updateRequest).get();
}
/**
* 关闭客户端
* @param args
*/
private static void shutdown() {
if (client != null) {
client.close();
System.out.println("=====关闭=====");
}
}
//测试
public static void main(String[] args) throws Exception {
createClient();
//String _id = createIndex();//插入一条数据
//System.out.println("ID:"+_id);
//getDataResponse("AWg7e1n-23-0DPtsBnWe");//根据_id查询某条数据 {"message":"create","username":"zhengyong","postDate":"19-01-11 13:56:06"}
//updateData("AWg7e1n-23-0DPtsBnWe");//根据_id更新某条数据(此处只更新日期) {"message":"update","username":"lisi","postDate":"19-01-11 14:06:01"}
//QueryBuilder builder = QueryBuilders.matchAllQuery();//全部查询
//QueryBuilder builder = QueryBuilders.termQuery("username", "zhengyong");//有查询条件
//queryDataList(builder);
//deleteDataResponse("AWg7fY1E23-0DPtsBnWf");//根据_id删除某条数据
shutdown();//关闭客户端
}
}