Elasticsearch是一個基於Lucene,Lucene是開源的Java索引檢索組件。它提供了一個分布式多用戶能力的全文搜尋引擎,基於RESTful web接口。Elasticsearch是用Java語言開發的,並作為Apache許可條款下的開放源碼發布,是一種流行的企業級搜尋引擎。Elasticsearch用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。官方客戶端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和許多其他語言中都是可用的。根據DB-Engines的排名顯示,Elasticsearch是最受歡迎的企業搜尋引擎,其次是Apache Solr,也是基於Lucene。
Elasticsearch 運行在一個分布式的環境中,從設計之初就考慮到了這一點,目的只有一個,讓您永遠高枕無憂。我們的集群可以隨著您的需求的增長而增長——只需再添加一個節點就行。
前面講過Elasticsearch安裝和基本使用方法,小夥伴們可以翻翻歷史文章,或在
https://nowjava.com/article/31176
【Elasticsearch 安裝與增刪改查的使用】
這裡查看。
ES內置分詞器
Standard Analyzer - 默認分詞器,按詞切分,小寫處理Simple Analyzer - 按照非字母切分(符號被過濾), 小寫處理Stop Analyzer - 小寫處理,停用詞過濾(the,a,is)Whitespace Analyzer - 按照空格切分,不轉小寫Keyword Analyzer - 不分詞,直接將輸入當作輸出Patter Analyzer - 正則表達式,默認\W+(非字符分割)Language - 提供了30多種常見語言的分詞器Customer Analyzer 自定義分詞器看概念太虛了!一定要動手實操才有用!我們可以用_analyze進行分析,會輸出分詞後的結果,舉兩個例子吧!其他的你也要自己課後動手試試哦!
#默認分詞器 按詞切分 小寫處理
GET _analyze
{
"analyzer": "standard",
"text": "2 running Quick brown-foxes leap over lazy dogs in the summer evening."
}
#可以發現停用詞被去掉了
GET _analyze
{
"analyzer": "stop",
"text": "2 running Quick brown-foxes leap over lazy dogs in the summer evening."
}
中文擴展分詞器
蘋果明明一個詞,不想讓它分為兩個呀!中文分詞在所有搜尋引擎中都是一個很大的難點,中文的句子應該是切分成一個個的詞,但是一句中文,在不同的上下文,其實是不同的理解,例如: 這個蘋果,不大好吃/這個蘋果,不大,好吃。
有一些比較不錯的中文分詞插件:IK、THULAC等。我們可以試試用IK進行中文分詞。
#安裝插件
https://nowjava.com/download/31278
在plugins目錄下創建analysis-ik目錄 解壓zip包到當前目錄 重啟ES
#查看插件
bin/elasticsearch-plugin list
#查看安裝的插件
GET http://localhost:9200/_cat/plugins?v
IK分詞器:支持自定義詞庫、支持熱更新分詞字典
ik_max_word: 會將文本做最細粒度的拆分,比如會將「這個蘋果不大好吃」拆分為"這個,蘋果,不大好,不大,好吃"等,會窮盡各種可能的組合;ik_smart: 會做最粗粒度的拆分,比如會將「這個蘋果不大好吃」拆分為"這個,蘋果,不大,好吃"curl -X GET "localhost:9200/_analyze?pretty" -H 'Content-Type: application/json' -d'
{
"analyzer" : "ik_max_word",
"text" : "這個蘋果不大好吃"
}
如何使用分詞器
列舉了很多的分詞器,那麼在實際中該如何使用呢?看看下面這個代碼演示就懂啦!
# 創建索引時候指定某個欄位的分詞器
PUT iktest
{
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "ik_smart"
}
}
}
}
# 插入一條文檔
PUT iktest/_doc/1
{
"content":"這個蘋果不大好吃"
}
# 測試分詞效果
GET /iktest/_analyze
{
"field": "content",
"text": "這個蘋果不大好吃"
}
--
知識分享,時代前行!~~ 時代Java還有更多好文章……請查看歷史和官網。