ElasticSearch 用ik分詞器創建索引(java API)

  ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,做爲當前流行的企業級搜索引擎,用於雲計算中,可以達到實時搜索,而且具備穩定,可靠,快速安裝,使用方便等多種優勢,獲得大多數企業的青睞。web

  ElasicSearch能夠經過終端創建索引,可是本人在作項目的時候用終端創建的索引,而後使用Java API進行數據的插入,始終得不到分詞,最終的解決辦法就是經過Java API進行創建索引,才避免了尷尬,很少說了。json

  假設基本數據是poi:服務器

  屬性以下:app

  poi_index:相似於id分佈式

  poi_title:地名  (相似於:武漢大學,華中科技大學等)ui

  poi_lng:經度搜索引擎

  poi_lat:緯度雲計算

  poi_phone:電話(通常爲undefined)spa

  poi_address:地址   (相似於  :XX省XX市XX區XX路XX號)code

  poi_tags:標籤,類別 (相似於:學校,賓館,公司等)

 

  

  以下,某些對象或者變量已經在全局設定好:

//客戶端設置
            settings = Settings
                    .builder()
                    .put("cluster.name", "cxy")               //節點名稱, 在es配置的時候設置
                    .put("client.transport.sniff", "true")
                    .build();
            //建立客戶端
            
            client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new InetSocketTransportAddress
                        (InetAddress.getByName("127.0.0.1"), 9300));  //以本機做爲節點 //建立映射
            mapping = XContentFactory.jsonBuilder()
                .startObject()
                    .startObject("properties")
                //      .startObject("m_id").field("type","keyword").endObject()
                        .startObject("poi_index").field("type","integer").endObject()
                        .startObject("poi_title").field("type","text").field("analyzer","ik_max_word").endObject()
                        .startObject("poi_address").field("type","text").field("analyzer","ik_max_word").endObject()
                        .startObject("poi_tags").field("type","text").field("analyzer","ik_max_word").endObject()
                        .startObject("poi_phone").field("type","text").field("analyzer","ik_max_word").endObject()
                        .startObject("poi_lng").field("type","text").endObject()
                        .startObject("poi_lat").field("type","text").endObject()
                    .endObject()
                .endObject();
            //pois:索引名 cxyword:類型名(能夠本身定義)
            PutMappingRequest putmap = Requests.putMappingRequest("pois").type("cxyword").source(mapping);
            //建立索引
            client.admin().indices().prepareCreate("pois").execute().actionGet();
            //爲索引添加映射
            client.admin().indices().putMapping(putmap).actionGet();

  這個時候索引就建立好了,mapping不能掉,這至關於一扇門戶,對數據按照設定規則處理,ik_max_word 是分詞類型,最細粒度切割,網上搜索ik分詞器的配置,這裏就不說了,下一篇是往索引裏面插入數據。

相關文章
相關標籤/搜索