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