35-天亮大数据系列教程之ElasticSearch6系列最新版教程之java操作es-2

目录
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/

猜你喜欢

转载自blog.csdn.net/erliang20088/article/details/81663584