java + elasticsearch
来源:互联网 发布:数据库三级是工程师吗 编辑:程序博客网 时间:2024/05/19 23:57
1.创建Client对象(connection)
private static final Logger LOG = LoggerFactory.getLogger(EsUtils.class);public static final String CLUSTER_NAME = "application_1"; // 实例名称private static final String IP1 = "192.168.0.74"; private static final String IP2 = "192.168.0.75"; private static final String IP3 = "192.168.0.76";private static final int PORT = 9300; // 端口private static Settings settings = Settings.settingsBuilder().put("cluster.name", CLUSTER_NAME).put("client.transport.sniff", false).build();private static TransportClient client;static {try {LOG.info("get client");client = TransportClient.builder().settings(settings).build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(IP1), PORT)) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(IP2), PORT)) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(IP3), PORT));} catch (UnknownHostException e) {e.printStackTrace();}}// 取得实例public static synchronized TransportClient getTransportClient() {return client;}
2.创建索引库
public static void createIndex(Client client) {//client.admin().indices().prepareCreate("hyn_es_data").execute().actionGet();client.admin().indices().prepareCreate("hyn_es_data1").execute().actionGet();client.close();}
3.创建索引类型
public static void createIndexType(Client client) {try {XContentBuilder mapping = XContentFactory.jsonBuilder().startObject() .startObject("data") .startObject("properties") .startObject("cn_name").field("type","string").field("index", "not_analyzed").endObject() .startObject("job_content").field("type","string").field("analyzer", "ik").field("search_analyzer", "ik").endObject() .startObject("department").field("type","string").field("index", "not_analyzed").endObject() .startObject("mailnickname").field("type","string").field("index", "not_analyzed").endObject() .startObject("start_time").field("type","string").field("index", "not_analyzed").endObject() .startObject("end_time").field("type","string").field("index", "not_analyzed").endObject() .startObject("type").field("type","string").field("index", "not_analyzed").endObject() .endObject() .endObject().endObject();PutMappingRequest mappingRequest = Requests.putMappingRequest("hyn_es_data1").type("data").source(mapping);client.admin().indices().putMapping(mappingRequest).actionGet();} catch (IOException e) {e.printStackTrace();}}
4.向索引类型插入数据
public static void insertIndexTypeData(Client client,String type) {List<IndexWorkContent> work = null;try {work = JdbcHiveDao.hiveData(type);} catch (ClassNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}int count = 0;if(work.size()==0){Log.info(type+"没有数据");}else{BulkRequestBuilder bulkRequest = client.prepareBulk();for (IndexWorkContent wk : work) {try {XContentBuilder xContentBuilder = XContentFactory.jsonBuilder().startObject().field("mailnickname", wk.getMailnickname()).field("cn_name", wk.getCn_name()).field("type", wk.getType()).field("job_content", wk.getJob_content()).field("start_time", wk.getStart_time()).field("end_time",wk.getEnd_time()).field("department",wk.getDept()).endObject();bulkRequest.add(client.prepareIndex("hyn_es_data1", "data").setSource(xContentBuilder));if (count % 1000 == 0) {bulkRequest.execute().actionGet();LOG.info(type+"成功建立1000 总数为:"+count);}count++;// IndexResponse response = client.prepareIndex("hyn_es_data",// "wifi").setSource(xContentBuilder)// .execute().actionGet();LOG.info(type+"插入数据量为:"+count);} catch (IOException e) {e.printStackTrace();}}bulkRequest.execute().actionGet();}}5.删除所有索引
public static void deleteAllIndex(Client client) {ClusterStateResponse response = client.admin().cluster().prepareState().execute().actionGet();String[] indexs = response.getState().getMetaData().getConcreteAllIndices();for (String index : indexs) {System.out.println(index + " delete");//// 清空所有索引。DeleteIndexResponse deleteIndexResponse = client.admin().indices().prepareDelete(index).execute().actionGet();System.out.println(deleteIndexResponse.getHeaders());}}
6.检索
public static void queryData(String index, String type, IkWordData ik, Client client) {List<IndexSearchData> abc = new ArrayList<IndexSearchData>();System.out.println(ik.toString());BoolQueryBuilder qb = new BoolQueryBuilder() .must(QueryBuilders.matchQuery("cn_name", ik.getEmployee_name())) .must(QueryBuilders.matchQuery("mailnickname", ik.getEmployee_account())) .must(QueryBuilders.matchPhraseQuery("job_content", ik.getIk_word()).slop(1)); //.must(QueryBuilders.matchPhraseQuery("start_time",ik.getStart_time()));SearchResponse response = client.prepareSearch(index).setSearchType(SearchType.QUERY_THEN_FETCH).setTypes(type).setFrom(0).setQuery(qb).execute().actionGet();SearchHits hits = response.getHits(); System.out.println("查询到记录数:" + hits.getTotalHits());SearchHit[] searchHists = hits.getHits();List<IndexSearchData> list = new ArrayList<IndexSearchData>();for (SearchHit sh : searchHists) {IndexSearchData isd = new IndexSearchData();isd.setIkword(ik.getIk_word());isd.setMailnickname(sh.getSource().get("mailnickname").toString());isd.setCn_name(sh.getSource().get("cn_name").toString());isd.setType(sh.getSource().get("type").toString());isd.setJob_content(sh.getSource().get("job_content").toString());isd.setStart_time(sh.getSource().get("start_time").toString());list.add(isd);}List<String> listTemp = new ArrayList<String>();for (IndexSearchData i : list) {listTemp.add(i.getMailnickname() + "," + i.getCn_name() + "," + i.getIkword() + "," + i.getJob_content() + "," + i.getType() + "," + i.getStart_time());}// 去重Iterator<String> it = listTemp.iterator();List<String> s = new ArrayList<String>();while (it.hasNext()) {String a = it.next();if (s.contains(a)) {it.remove();} else {s.add(a);}} System.out.println(s.size());for (String i : s) {String[] a = i.split(",");IndexSearchData isd = new IndexSearchData();isd.setMailnickname(a[0]);isd.setCn_name(a[1]);isd.setIkword(a[2]);//isd.setIkwordcount(Integer.parseInt(a[3]));isd.setJob_content(a[3]);isd.setType(a[4]);isd.setStart_time(a[5]);JdbcMysql.save(isd);}}
0 0
- elasticsearch Java
- java + elasticsearch
- Elasticsearch Java-API CRUD Java操作Elasticsearch
- 使用Elasticsearch的java api,操作elasticsearch
- Elasticsearch之 java api
- Elasticsearch Java虚拟机配置
- ElasticSearch java客户端使用
- elasticsearch java api优化
- ElasticSearch: Java API
- Elasticsearch Java API总汇
- elasticsearch java api资料
- elasticsearch java API ------搜索
- elasticsearch java api demo
- ElasticSearch的Java API
- ES006-Elasticsearch-JAVA客户端
- Elasticsearch Java API
- java对elasticsearch操作
- 03 elasticsearch java api
- Linux-Shell脚本编程-学习-7-总结前面开启后面的学习
- iOS 推送全解析,你不可不知的所有 Tips!
- MPAndroidChart柱状图
- centos 7下如何改变网卡名称
- Android开发之——消息模式Toast.makeText的常见用法
- java + elasticsearch
- java.String中的方法
- 移动端兼容性问题
- js 获取所有孙级标签
- linux - 编辑定时任务的步骤
- 欢迎使用CSDN-markdown编辑器
- linux navicat 过期 解决办法
- 实现ViewPager无限循环的方式一
- mac 电脑 eclipse 启动停在 org.eclipse.debug.core 导致无法启动