ElasticSearch(簡(jiǎn)稱ES)的由來
基于Lucene(java)開發(fā)升級(jí)而來凛忿。ElasticSearch是基于Lucene做了一些封裝和增強(qiáng),是一個(gè)開源的高擴(kuò)展的分布式全文搜索引擎湿蛔,它可以近乎實(shí)時(shí)的存儲(chǔ)、檢索數(shù)據(jù)县爬,它是通過簡(jiǎn)單的RESTful API來隱藏Lucene的復(fù)雜性阳啥,讓全文搜索更加簡(jiǎn)單。
誰在使用:
維基百科财喳,Stack Overflow察迟,GitHub等等
ELK技術(shù)=ES+logStash(采集日志)+Kibana 用于-日志數(shù)據(jù)分析
ES斩狱、Solr、Lucene的關(guān)聯(lián)與區(qū)別:
- Solr也是基于Lucene開發(fā)而來扎瓶,
- ES可以使用RestFul所踊,性能方面的提升。
- es開箱即用概荷,solr安裝復(fù)雜秕岛;
- solr利用Zookeeper進(jìn)行分布式管理,ES用的是自身帶有分布式的功能误证;
- solr支持更多的數(shù)據(jù)格式:json继薛,xml,csv雷厂,es只支持json惋增,但是已經(jīng)足夠我們使用;
<mark style="box-sizing: border-box;">注意:JDK1.8是最低要求改鲫!</mark>
正文開始:
官網(wǎng)下載地址:https://www.elastic.co/cn/elasticsearch/
7.6.2版本:https://www.elastic.co/downloads/past-releases/elasticsearch-7-6-2
ELK三劍客,都是解壓即用.(環(huán)境:需要node)
Windows安裝:下載安裝包后,解壓新建目錄
目錄:
- bin-啟動(dòng)文件
- config-配置文件
- log4j2 日志配置文件
- jvm.options jvm配置
- elasticsearch.yml es的配置文件,默認(rèn)9200端口
啟動(dòng):
bin目錄直接啟動(dòng):elasticsearch.bat文件
訪問:9200端口:頁面顯示
{
"name" : "LAPTOP-NML71DV4",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "wXf0oB0CS22VXSy_aDP2cg",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
安裝可視化界面:es head插件(需要node環(huán)境)
下載地址:https://github.com/mobz/elasticsearch-head
解壓目錄:安裝D:\Java\elasticsearch\elasticsearch-head-master
進(jìn)入目錄后:cnpm install
運(yùn)行:npm run start (注意:由于master是9100端口,而es為9200端口,會(huì)有跨域問題)
解決跨域:修改elasticsearch.yml,添加如下兩行
http.cors.enabled: true
http.cors.allow-origin: "*"
訪問:localhost:9100
-索引就是數(shù)據(jù)庫,當(dāng)成數(shù)據(jù)庫頁面來看
(注意:此時(shí)cmd可能會(huì)鎖定,導(dǎo)致手動(dòng)添加索引卡住,點(diǎn)一下回車鍵即可)
-就當(dāng)作數(shù)據(jù)庫navicat來看,關(guān)注-概覽,索引,數(shù)據(jù)瀏覽即可,后面的查詢我們用kibana去做
Kibana(需要版本對(duì)應(yīng)es)
Kibana是一個(gè)針對(duì)es的開源分析及可視化平臺(tái),用來搜索,查看交互存儲(chǔ)再es索引中的數(shù)據(jù),可以通過各種圖標(biāo)進(jìn)行高級(jí)數(shù)據(jù)分析及展示.
解壓后:啟動(dòng)測(cè)試:bin-kibana.bat
默認(rèn)端口:http://localhost:5601
漢化:打開config/kibana.yml 修改#i18n.locale: "en"為i18n.locale: "zh-CN"
ES核心概念
ES是一個(gè)面向文檔
MySQL | ES |
---|---|
數(shù)據(jù)庫 | 索引 |
表 | types(將被棄用) |
行 | documents文檔 |
字段 | fields |
物理設(shè)計(jì):ES默認(rèn)在后臺(tái)把每個(gè)索引劃分成多個(gè)片,每分分片可以在集群中的不同服務(wù)器間遷移,一個(gè)人就是一個(gè)集群,默認(rèn)集群名字是elasticsearch.
文檔 --一條條數(shù)據(jù)
索引 --數(shù)據(jù)庫
score-權(quán)重-即命中數(shù)
IK分詞器
何為分詞? 分詞就是把一段種文或者別的劃分成一個(gè)個(gè)關(guān)鍵字,我們搜索的時(shí)候就會(huì)把自己的信息進(jìn)行分詞,會(huì)把數(shù)據(jù)庫中或者索引庫中的數(shù)據(jù)進(jìn)行分詞,然后匹配,中文是把每個(gè)字堪稱一個(gè)詞.中文建議使用IK分詞器.
IK提供了2個(gè)分詞器:ik_smart 和 ik_max_word,ik_smart為最少切分,ik_max_word為最細(xì)粒度劃分.
下載IK分詞器(注意與es同版本):https://github.com/medcl/elasticsearch-analysis-ik
下載完后解壓放入es目錄下的plugins目錄下
重啟es
使用Kibana分詞器測(cè)試:打開頁面->工具頁面
分別測(cè)試2個(gè)分詞器
GET _analyze
{
"analyzer":"ik_smart",
"text": "超級(jí)喜歡晏子噠噠"
}
GET _analyze
{
"analyzer":"ik_max_word",
"text": "超級(jí)喜歡晏子噠噠"
}
比如'超級(jí)喜歡晏子噠噠',這時(shí)候晏子噠噠會(huì)被分成4個(gè)詞,而不是我想要的,此時(shí)需要自己配置詞,加入到分詞器的字典中!
IK分詞器增加自己配置: config->IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 擴(kuò)展配置</comment>
<!--用戶可以在這里配置自己的擴(kuò)展字典 -->
<entry key="ext_dict">test.dic</entry>
<!--用戶可以在這里配置自己的擴(kuò)展停止詞字典-->
<entry key="ext_stopwords"></entry>
<!--用戶可以在這里配置遠(yuǎn)程擴(kuò)展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用戶可以在這里配置遠(yuǎn)程擴(kuò)展停止詞字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
新建test.dic:
晏子噠噠
保存完重啟es測(cè)試.
未完待續(xù)...