1. 程式人生 > >ElasticSearch 用ik分詞器建立索引(java API)

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

tle creat analyzer undefined 全文搜索 () map 多用戶 tcl

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

  ElasicSearch可以通過終端建立索引,但是本人在做項目的時候用終端建立的索引,然後使用Java API進行數據的插入,始終得不到分詞,最終的解決辦法就是通過Java API進行建立索引,才避免了尷尬,不多說了。

  假設基本數據是poi:

  屬性如下:

  poi_index:類似於id

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

  poi_lng:經度

  poi_lat:緯度

  poi_phone:電話(一般為undefined)

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

  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分詞器的配置,這裏就不說了,下一篇是往索引裏面插入數據。

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