ElasticSearch系列2

這結局或許就完美在可悲發表於2020-11-19

1.使用ElasticSearch程式設計操作
過程:1.建立Setting物件,相當於是一個配置資訊,主要配置叢集的名稱
2.建立一個客戶端Client物件
3.使用client物件建立一個索引庫
4.關閉client物件

pom.xml
<dependencies>
   <dependency>
       <groupId>org.elasticsearch</groupId>
       <artifactId>elasticsearch</artifactId>
       <version>5.6.8</version>
   <dependency>
   <dependency>
       <groupId>org.elasticsearch.client</groupId>
       <artifactId>transport</artifactId>
       <version>5.6.8</version>
   <dependency>
<dependencies>

編碼:

      1.建立Setting物件,相當於是一個配置資訊,主要配置叢集的名稱
      Settings settings = Setting.builder()
                                 .put("cluster.name","my-elasticsearch")
                                 .bulid();
      2.建立一個客戶端Client物件
      TransportClient client = new PreBuiltTransportClient(settings);
      client.addTransportAddress(new InetSocketportAddress(InetAddress.getName("127.0.0.1"),9301));
      client.addTransportAddress(new InetSocketportAddress(InetAddress.getName("127.0.0.1"),9302));
      client.addTransportAddress(new InetSocketportAddress(InetAddress.getName("127.0.0.1"),9303));
      3.使用client物件建立一個索引庫
      #index_hello索引庫名稱
      client.admin().indices().prepareCreate("index_hello")
      .get();#執行操作
      4.關閉client物件
        client.close();

使用java客戶端設定mapping:

1.建立Setting物件,相當於是一個配置資訊,主要配置叢集的名稱
      Settings settings = Setting.builder()
                                 .put("cluster.name","my-elasticsearch")
                                 .bulid();
      2.建立一個客戶端Client物件
      TransportClient client = new PreBuiltTransportClient(settings)
      .addTransportAddress(new InetSocketportAddress(InetAddress.getName("127.0.0.1"),9301))
      .addTransportAddress(new InetSocketportAddress(InetAddress.getName("127.0.0.1"),9302));
      .addTransportAddress(new InetSocketportAddress(InetAddress.getName("127.0.0.1"),9303));
      3.建立一個mapping資訊,應該是一個json資料,可以是字串,也可以是XContextBuilder物件
      XContentBuilder builder = XContentFactory.jsonBuilder()
         .startObject()
             .startObject("article")#索引名
                 .startObject("properties")#屬性
                     .startObject("id")#型別
                         .field("type","long")#欄位
                         .field("store",true)
                     .endObject()    
                     .startObject("title")#型別
                         .field("type","text")#欄位
                         .field("store",true)
                         .field("analyzer","ik_smart")
                     .endObject()    
                     .startObject("content")#型別
                         .field("type","text")#欄位
                         .field("store",true)
                         .field("analyzer","ik_smart")    
                    .endObject()  
                .endObject() 
            .endObject()        
        .endObject();                  
      4.使用client向es伺服器傳送mappping資訊
      clinet.admin().indices()
            .prepareMapping("index_hello")#設定對映的索引
            .setType("article")#設定對映的type
            .setSource(builder)#mapping資訊。可以是XContentBuilder也可以是json字串
            .get();#執行操作
      5.關閉client物件
        client.close();

新增文件:

 1.建立Setting物件,相當於是一個配置資訊,主要配置叢集的名稱
      Settings settings = Setting.builder()
                                 .put("cluster.name","my-elasticsearch")
                                 .bulid();
      2.建立一個客戶端Client物件
      TransportClient client = new PreBuiltTransportClient(settings);
      client.addTransportAddress(new InetSocketportAddress(InetAddress.getName("127.0.0.1"),9301));
      client.addTransportAddress(new InetSocketportAddress(InetAddress.getName("127.0.0.1"),9302));
      client.addTransportAddress(new InetSocketportAddress(InetAddress.getName("127.0.0.1"),9303));
      3.建立一個文件物件,建立一個json格式的字串,或者使用XContentBuilder
      XContentBuilder builder = XContentFactory.jsonBuilder
          .startObject()
              .field("id",1)
              .field("title","aaaa")
              .field("content","bbbb")
           .endObject();   
      4.使用Client物件把文件新增到索引庫中
         client.prepareIndex("index_hello","article","1").setSource(builder).get();
         或者這麼寫也可以
         client.prepareIndex()
         //設定索引名稱
         setIndex("index_hello")
         //設定type
         .setType("article")
         //設定文件的id,如果不設定的話自動的生成一個id
         .setId("1")
         //設定文件資訊
         .setSource(builder)
         .get()
      5.關閉client物件
        client.close();

相關文章