2019-08-29 ElasticSearch

【】

使用準(zhǔn)備

1.運(yùn)行環(huán)境需要JDK和Nodejs,分詞器使用IK分詞器
2.同一個(gè)IP服務(wù)端和客戶端的端口號(hào)不同通信會(huì)引發(fā)跨域問題,
需要在ElasticSearch的elasticsearch.yml文件寫上跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
3.客戶端根目錄安裝grunt
cmd窗口

npm install -g grunt-cli
npm install

4.啟動(dòng)服務(wù)器elasticsearch-5.6.8\bin/elasticsearch.bat
啟動(dòng)客戶端cmd窗口 grunt server


sp20190829_214021_220.png

導(dǎo)入依賴

<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>

創(chuàng)建客戶端獲取連接

public static TransportClient getClient() throws UnknownHostException {
        Settings settings = Settings.EMPTY;
        TransportClient transportClient = new PreBuiltTransportClient(settings);
        transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
        return transportClient;
    }

創(chuàng)建索引庫(kù)

public void createIndex() throws  Exception{

        //4: 使用client對(duì)象完成索引庫(kù)的創(chuàng)建,索引庫(kù)名blog
        CreateIndexResponse response =  transportClient.admin().indices().prepareCreate("blog").get();
        System.out.println(response.isAcknowledged());
        System.out.println(transportClient);
        //5:關(guān)閉
        transportClient.close();
    }

導(dǎo)入docum數(shù)據(jù)

public void createIndex() throws  Exception{
        /*1:創(chuàng)建客戶端
        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new
                TransportAddress(InetAddress.getByName("127.0.0.1"), 9300));*/
        TransportClient client =getClient();
        //2:創(chuàng)建document
        XContentBuilder contentBuilder = XContentFactory.jsonBuilder().startObject()
                .field("id",1)
                .field("title","elasticsearch是一個(gè)基于lucene的搜索服務(wù)")
                .field("content","ElasticSearch是一個(gè)基于Lucene的搜索服務(wù)器。" +
                        "它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。" +
                        "Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布," +
                        "是當(dāng)前流行的企業(yè)級(jí)搜索引擎。設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定," +
                        "可靠,快速,安裝使用方便。")
                .endObject();
        //3:創(chuàng)建index
        client.prepareIndex("blog2", "article", "1").setSource(contentBuilder).get();
        //4:關(guān)閉資源
        client.close();
    }

創(chuàng)建mapping

mapping是用來定義表的規(guī)則,使用什么分詞器使用域的范圍等等。
不支持修改,需要庫(kù)里的mapping為空才能創(chuàng)建

public void createMapping() throws Exception{
        TransportClient transportClient = getClient();
        XContentBuilder contentBuilder = XContentFactory.jsonBuilder()
                .startObject()
                .startObject("content")
                .startObject("properties")
                .startObject("id").field("type","long").field("store",true).endObject()
               //ik_max_word 最細(xì)切法 和 ik_smart 最小切法
              //創(chuàng)建規(guī)則mapping時(shí)候如果沒有配置ik插件,這里會(huì)出現(xiàn)異常
 .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();

        transportClient.admin().indices()
                // 設(shè)置要做映射的索引
                .preparePutMapping("blog")
                // 設(shè)置做映射的type
                .setType("content")
                // 設(shè)置mapping信息,可以是XContentBuilder 也可以是json字符串
                .setSource(contentBuilder).get();
             transportClient.close();
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容