1. 程式人生 > >ElasticSearch搜尋伺服器與IK分詞器

ElasticSearch搜尋伺服器與IK分詞器

ElasticSearch搜尋伺服器

1.java語言全文檢索技術

這裡寫圖片描述

這裡寫圖片描述

2.ElasticSearch 安裝配置使用入門
這裡寫圖片描述

Window系統下載zip版本,linux系統下載tar版本
下載解壓之後
這裡寫圖片描述

bin 存放elasticSearch 執行命令
config 存放配置檔案
data 存放資料
lib 存放elsticSearch執行依賴jar包
logs 存放日誌
modules 存放elasticSearch模組
plugins 存放外掛

執行elasticSearch/bin/elasticsearch.bat 檔案
配置JAVA_HOME環境變數
這裡寫圖片描述


訪問 http://127.0.0.1:9200

3.ElasticSearch外掛安裝 es head

在下面的資料夾中執行cmd,執行
plugin.bat install mobz/elasticsearch-head
這裡寫圖片描述
這裡寫圖片描述

這裡寫圖片描述

4.ElasticSearch基本操作入門

參考書籍: ElasticSearch伺服器開發(第二版).pdf

這裡寫圖片描述

全文檢索:針對文字中的每個詞,建立詞條建立索引,進行搜尋。
ElasticSearch 操作伺服器上的資料,通過Rest API
這裡寫圖片描述

5. ElasticSearch 基礎 資料架構的主要概念

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

圖解
這裡寫圖片描述


索引物件:儲存資料的表結構,任何搜尋資料,存放在索引物件上
對映: 資料如何放到索引物件上,需要有一個對映配置,資料型別、是否儲存、是否分詞…
文件: 一條資料記錄,存在索引物件上
文件型別: 一個索引物件 存放多種型別資料,資料用文件型別進行標識

程式設計:建立索引物件—建立對映—-儲存資料【文件】—指定文件型別進行搜尋資料【文件】

6.新建文件(自動建立索引和對映)
6.1需要新建maven專案
這裡寫圖片描述

6.2基於maven的pom匯入座標依賴

 <dependencies>
    <dependency
>
<groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>2.4.0</version> </dependency> </dependencies>

ElasticSearch2.4.0依賴lucene5.5.2版本
當直接在EalsticSearch建立文件物件時,如果索引不存在的,預設會自動建立,對映採用預設方式
ElasticSearch 服務預設埠9300
web 管理平臺埠9200

6.3建立文件,自動建立索引

// 直接在EalsticSearch中建立文件,自動建立索引
@Test
public void demo1() throws Exception {
    // 建立連線搜尋伺服器物件
    Client client = TransportClient
        .builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress                       .getByName("127.0.0.1"), 9300));
    // 描述json資料
    /*
     * {id:xxx,title:xxx,content:xxx}
     */
    XContentBuilder builder = XContentFactory
                .jsonBuilder()
                .startObject()
                .field("id",1)
                .field("title","你好麼麼噠,ElasticSearch是一個基於Lucene的搜尋伺服器")
                .field("content","它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。")
                .endObject();
        //建立文件
    client.prepareIndex("blog1","article","1").setSource(builder).get();

        //關閉連線
        client.close();
    }

自動建立索引
這裡寫圖片描述

自動建立索引對映
這裡寫圖片描述
文件資料(type文件型別)
這裡寫圖片描述

6.4搜尋文件資料

查詢資料 主要依賴QueryBuilder物件,可以通過QueryBuilders獲取
boolQuery() 布林查詢,可以用來組合多個查詢條件
fuzzyQuery() 相似度查詢
matchAllQuery() 查詢所有資料
regexpQuery() 正則表示式查詢
termQuery() 詞條查詢
wildcardQuery() 模糊查詢
這裡寫圖片描述

6.5各種查詢物件Query的使用

ElasticSearch 支援所有Lucene查詢,並對其進行簡化封裝
TermQuery 詞條查詢
WildcardQuery 模糊查詢
FuzzyQuery 相似度查詢

6.5.1 ElasticSearch提供QueryBuilders.queryStringQuery(搜尋內容)查詢方法,對所有欄位進行分詞查詢
這裡寫圖片描述

6.5.2只想查詢content裡包含全文,使用wildcardQuery磨合查詢 *任意字串 ?任意單個字元
這裡寫圖片描述

6.5.3 查詢content詞條為“搜尋”內容,使用TermQuery

這裡寫圖片描述

發現查詢不到!!!,說明沒有“搜尋”這個詞條

詞條:就是將文字內容存入搜尋伺服器,搜尋伺服器進行分詞內容

“ElasticSearch是一個基於Lucene的搜尋伺服器”
分詞(好的):ElasticSearch、是、一個、基於、Lucene、的、搜尋、伺服器
預設分詞(差):ElasticSearch、是、一、個、基、於、Lucene、的、搜、索、服、務、器

搜尋“全面”能夠查詢到
這裡寫圖片描述

7. IK分詞器和ElasticSearch整合使用

ElasticSearch預設採用分詞器,單個字分詞,效果很差

這裡寫圖片描述

7.1下載開源專案

這裡寫圖片描述

7.2.打包ik分詞器
mvn clean 清空
mvn package 打包
這裡寫圖片描述

7.3進入target/release目錄
將下列檔案,拷貝到%es%/plugins/analysis-ik
這裡寫圖片描述

7.4進入target/release/config 目錄
將所有配置檔案,複製%es%/config 下
這裡寫圖片描述

7.5配置elasticsearch.yml
在該檔案內容的後面配置
這裡寫圖片描述

7.6重啟es 可以看見ik分詞器被載入
這裡寫圖片描述

7.7訪問

這裡寫圖片描述