目录
1、对文档的crud增删改查操作
2、高级爬虫持久化之elasticsearch实战
详情
1、对文档的crud增删改查操作
- TransportClient
- 单条和批量添加文档
/**
* 向指定的index和type中添加单个文档
*
* @param indexName
* @param typeName
*/
public void addOneDocument(String indexName, String typeName) {
// 通过map定义kv结构数据对象
Map<String, String> kvMap = new HashMap<String, String>();
kvMap.put("title", "自定义新闻标题");
kvMap.put("source_url", "自定义新闻url");
kvMap.put("post_time", "2018-08-04 12:12:12");
kvMap.put("insert_time", "2018-08-04 12:13:12");
// 将数据发送到服务器端
this.client.prepareIndex(indexName, typeName).setSource(kvMap)
.execute().actionGet();
}
/**
* 批量添加文档至目标索引的类型当中
*
* @param indexName
* @param typeName
* @return
*/
public boolean addBatchDocument(String indexName, String typeName) {
// 通过map定义kv结构数据对象
Map<String, String> kvMap = new HashMap<String, String>();
kvMap.put("title", "自定义新闻标题-bulk");
kvMap.put("source_url", "自定义新闻url");
kvMap.put("post_time", "2018-08-04 12:12:12");
kvMap.put("insert_time", "2018-08-04 12:13:12");
// 初始化批量执行对象
BulkRequestBuilder brb = this.client.prepareBulk();
// 初始化单个索引数据的builder对象
IndexRequestBuilder irb = this.client.prepareIndex(indexName, typeName)
.setSource(kvMap);
// 将单个对象加入批量执行对三次,相当于同时索引3条数据
brb.add(irb);
brb.add(irb);
brb.add(irb);
// 正式发起批量索引的请求
BulkResponse bulkResponse = brb.execute().actionGet();
// 返回是否有索引失败的消息
return bulkResponse.hasFailures();
}
public static void main(String[] args) throws InterruptedException,
ExecutionException, IOException {
// 初始化client工具类
TestESTransportClient transportClient = new TestESTransportClient();
// 调用创建索引方法
String indexName = "index_from_tc";
String typeName = "type_from_tc";
transportClient.addBatchDocument(indexName, typeName);
System.out.println("done");
}
- 搜索指定doc id值或指定字段条件的文档
/**
* 根据docID查询对应的文档信息
*
* @param indexName
* @param typeName
* @param docID
*/
public void selectOneDocumentByID(String indexName, String typeName,
String docID) {
// 将数据发送到服务器端
SearchResponse response = this.client.prepareSearch(indexName)
.setTypes(typeName)
.setQuery(QueryBuilders.termQuery("_id", docID)).execute()
.actionGet();
System.out.println(response.toString());
}
/**
* 根据query信息,搜索出命中条件的结果文档集合
*
* @param indexName
* @param typeName
*/
public void searchDocumentByQuery(String indexName, String typeName) {
// 将数据发送到服务器端
SearchResponse response = this.client.prepareSearch(indexName)
.setTypes(typeName)
.setQuery(QueryBuilders.termQuery("title", "标题")).execute()
.actionGet();
SearchHits hits=response.getHits();
for (SearchHit searchHit : hits) {
Map source = searchHit.getSourceAsMap();
System.out.println(source);
}
}
public static void main(String[] args) throws InterruptedException,
ExecutionException, IOException {
// 初始化client工具类
TestESTransportClient transportClient = new TestESTransportClient();
// 调用创建索引方法
String indexName = "index_from_tc";
String typeName = "type_from_tc";
String docID = "WQtTBWUB2Eqk9HdO3Vc0";
transportClient.searchDocumentByQuery(indexName, typeName);
System.out.println("done");
}
- 删除指定doc id值的文档
/**
* 删除指定id值的文档
*
* @param indexName
* @param typeName
*/
public void removeOneDocument(String indexName, String typeName,
String docID) {
// 将数据发送到服务器端
this.client.prepareDelete(indexName, typeName, docID).execute()
.actionGet();
}
public static void main(String[] args) throws InterruptedException,
ExecutionException, IOException {
// 初始化client工具类
TestESTransportClient transportClient = new TestESTransportClient();
// 调用创建索引方法
String indexName = "index_from_tc";
String typeName = "type_from_tc";
// 指定某条文档的id删除,可以从head插件中找到
String docID = "8lZZBWUB37QQ622O_Abb";
transportClient.removeOneDocument(indexName, typeName, docID);
System.out.println("done");
}
- 修改指定doc id值的文档
/**
* 更新指定id值的文档,只更新有显式指定的字段,未被指定修改的则不改变
*
* @param indexName
* @param typeName
*/
public void updateOneDocument(String indexName, String typeName,
String docID) {
// 通过map定义kv结构数据对象
Map<String, String> kvMap = new HashMap<String, String>();
kvMap.put("title", "我是被update的title");
kvMap.put("source_url", "自定义新闻url");
kvMap.put("post_time", "2018-08-04 12:12:12");
kvMap.put("insert_time", "2018-08-04 12:13:12");
// 将要更新数据发送到服务器端
this.client.prepareUpdate(indexName, typeName, docID).setDoc(kvMap)
.execute().actionGet();
}
public static void main(String[] args) throws InterruptedException,
ExecutionException, IOException {
// 初始化client工具类
TestESTransportClient transportClient = new TestESTransportClient();
// 调用创建索引方法
String indexName = "index_from_tc";
String typeName = "type_from_tc";
String docID = "WQtTBWUB2Eqk9HdO3Vc0";
transportClient.updateOneDocument(indexName, typeName, docID);
System.out.println("done");
}
2、高级爬虫持久化之elasticsearch实战
- 将爬虫持久化之elasticsearch中,作为后续的搜索、分析的数据源。
该模块涉及代码相关视频资料,请加以下方天亮大数据交流群中找到相关资料。
天亮教育是一家从事大数据云计算、人工智能、教育培训、产品开发、咨询服务、人才优选为一体的综合型互联网科技公司。
公司由一批BAT等一线互联网IT精英人士创建,
以”快乐工作,认真生活,打造高端职业技能教育的一面旗帜”为愿景,胸怀”让天下没有难找的工作”使命,
坚持”客户第一、诚信、激情、拥抱变化”的价值观,
全心全意为学员赋能提效,践行技术改变命运的初心。
更多学习讨论, 请加入
官方-天亮大数据交流-366784928
群二维码:
天亮教育公开课-从小白到大佬修成记-全系列视频地址:http://bbs.myhope365.com/forum.php?mod=viewthread&tid=1422&extra=page%3D1
欢迎关注天亮教育公众号,大数据技术资料与课程、招生就业动态、教育资讯动态、创业历程分享一站式分享,官方微信公众号二维码:
天亮教育官方群318971238,
爬虫、nlp技术qq群320349384
hadoop & spark & hive技术群297585251,
官网:http://myhope365.com
官方天亮论坛:http://bbs.myhope365.com/