ElasticSearch 7.x文章目錄ElasticSearch 7.x1.分詞測(cè)試2.ES中默認(rèn)分詞器3.IK分詞器4.自定義分詞器es啟動(dòng)外部掛載啟動(dòng)kibana啟動(dòng)ik分詞器下載1.ik分詞器安裝2.es啟動(dòng)3.Kibana啟動(dòng)1.windows環(huán)境安裝2.Doc...
ElasticSearch 7.x
文章目錄
ElasticSearch 7.x
1.分詞測(cè)試
2.ES中默認(rèn)分詞器
3.IK分詞器
4.自定義分詞器
es啟動(dòng)外部掛載啟動(dòng)
kibana啟動(dòng)
ik分詞器下載
1.ik分詞器安裝
2.es啟動(dòng)
3.Kibana啟動(dòng)
1.windows環(huán)境安裝
2.Docker安裝ElasticSearch
3.分詞器
1.windows環(huán)境安裝
es下載地址: https://www.elastic.co/cn/downloads/past-releases#elasticsearch
ik分詞器下載地址: https://github.com/medcl/elasticsearch-analysis-ik/releases
Kibana下載地址: https://www.elastic.co/cn/downloads/past-releases#kibana
注意:
本文測(cè)試基于7.9.0版本,推薦springboot版本2.4以上,本文使用springboot版本為2.7
下載時(shí)保證es,ik分詞器及kibana版本一致,否則可能出現(xiàn)啟動(dòng)問(wèn)題,
分詞器建議使用官方的安裝方式,解壓可能會(huì)啟動(dòng)失敗
7.x版本需要jdk環(huán)境為1.8以上,如果是8.x則需要jdk17以上環(huán)境,否則啟動(dòng)失敗
1.ik分詞器安裝
進(jìn)入es解壓目錄通過(guò)終端執(zhí)行安裝命令
./bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.9.0 或 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.0/elasticsearch-analysis-ik-7.9.0.zip
2.es啟動(dòng)
es解壓后啟動(dòng)bin下的elasticsearch.bat即可
./bin/elasticsearch.bat 如果是后臺(tái)啟動(dòng) ./bin/elasticsearch.bat -d
訪問(wèn) http://127.0.0.1:9200/ 驗(yàn)證是否啟動(dòng)成功
3.Kibana啟動(dòng)
解壓后啟動(dòng)bin下的kibana.bat即可
./bin/kibana.bat
kibana訪問(wèn)地址
http://127.0.0.1:5601/
2.Docker安裝ElasticSearch
1. es及kibana下載
docker pull elasticsearch:7.9.0
docker pull kibana:7.9.0
創(chuàng)建映射文件:
mkdir -p elasticsearch/configmkdir -p elasticsearch/datamkdir -p elasticsearch/plugins
在config下執(zhí)行 vim elasticsearch.yml
network.host: 0.0.0.0
elasticsearch.yml配置文件
1.1、cluster.name: elasticsearch 配置es的集群名稱(chēng),默認(rèn)是elasticsearch,es會(huì)自動(dòng)發(fā)現(xiàn)在同一網(wǎng)段下的es,如果在同一網(wǎng)段下有多個(gè)集群,就可以用這個(gè)屬性來(lái)區(qū)分不同的集群。 1.2、node.name:"Franz Kafka"節(jié)點(diǎn)名,默認(rèn)隨機(jī)指定一個(gè)name列表中名字,該列表在es的jar包中config文件夾里name.txt文件中,其中有很多作者添加的有趣名字。1.3、node.master: true指定該節(jié)點(diǎn)是否有資格被選舉成為node,默認(rèn)是true,es是默認(rèn)集群中的第一臺(tái)機(jī)器為master,如果這臺(tái)機(jī)掛了就會(huì)重新選舉master。1.4、node.data: true指定該節(jié)點(diǎn)是否存儲(chǔ)索引數(shù)據(jù),默認(rèn)為true。1.5、index.number_of_shards: 5設(shè)置默認(rèn)索引分片個(gè)數(shù),默認(rèn)為5片。1.6、index.number_of_replicas: 1設(shè)置默認(rèn)索引副本個(gè)數(shù),默認(rèn)為1個(gè)副本。1.7、path.conf: /path/to/conf 設(shè)置配置文件的存儲(chǔ)路徑,默認(rèn)是es根目錄下的config文件夾。1.8、path.data: /path/to/data設(shè)置索引數(shù)據(jù)的存儲(chǔ)路徑,默認(rèn)是es根目錄下的data文件夾,可以設(shè)置多個(gè)存儲(chǔ)路徑,用逗號(hào)隔開(kāi),例:path.data: /path/to/data1,/path/to/data2 1.9、path.work: /path/to/work 設(shè)置臨時(shí)文件的存儲(chǔ)路徑,默認(rèn)是es根目錄下的work文件夾。1.10、path.logs: /path/to/logs 設(shè)置日志文件的存儲(chǔ)路徑,默認(rèn)是es根目錄下的logs文件夾1.11、path.plugins: /path/to/plugins 設(shè)置插件的存放路徑,默認(rèn)是es根目錄下的plugins文件夾1.12、bootstrap.mlockall: true設(shè)置為true來(lái)鎖住內(nèi)存。因?yàn)楫?dāng)jvm開(kāi)始swapping時(shí)es的效率會(huì)降低,所以要保證它不swap,可以把ES_MIN_MEM和 ES_MAX_MEM兩個(gè)環(huán)境變量設(shè)置成同一個(gè)值,并且保證機(jī)器有足夠的內(nèi)存分配給es。同時(shí)也要允許elasticsearch的進(jìn)程可以鎖住內(nèi)存,linux下可以通過(guò)ulimit -l unlimited命令。1.13、network.bind_host: 192.168.0.1 設(shè)置綁定的ip地址,可以是ipv4或ipv6的,默認(rèn)為0.0.0.0。1.14、network.publish_host: 192.168.0.1 設(shè)置其它節(jié)點(diǎn)和該節(jié)點(diǎn)交互的ip地址,如果不設(shè)置它會(huì)自動(dòng)判斷,值必須是個(gè)真實(shí)的ip地址。1.15、network.host: 192.168.0.1 這個(gè)參數(shù)是用來(lái)同時(shí)設(shè)置bind_host和publish_host上面兩個(gè)參數(shù)。1.16、transport.tcp.port: 9300設(shè)置節(jié)點(diǎn)間交互的tcp端口,默認(rèn)是9300。1.17、transport.tcp.compress: true設(shè)置是否壓縮tcp傳輸時(shí)的數(shù)據(jù),默認(rèn)為false,不壓縮。1.18、http.port: 9200設(shè)置對(duì)外服務(wù)的http端口,默認(rèn)為9200。1.19、http.max_content_length: 100mb 設(shè)置內(nèi)容的最大容量,默認(rèn)100mb1.20、http.enabled: false是否使用http協(xié)議對(duì)外提供服務(wù),默認(rèn)為true,開(kāi)啟。1.21、gateway.type: local gateway的類(lèi)型,默認(rèn)為local即為本地文件系統(tǒng),可以設(shè)置為本地文件系統(tǒng),分布式文件系統(tǒng),Hadoop的HDFS,和amazon的s3服務(wù)器。1.22、gateway.recover_after_nodes: 1設(shè)置集群中N個(gè)節(jié)點(diǎn)啟動(dòng)時(shí)進(jìn)行數(shù)據(jù)恢復(fù),默認(rèn)為1。1.23、gateway.recover_after_time: 5m 設(shè)置初始化數(shù)據(jù)恢復(fù)進(jìn)程的超時(shí)時(shí)間,默認(rèn)是5分鐘。1.24、gateway.expected_nodes: 2設(shè)置這個(gè)集群中節(jié)點(diǎn)的數(shù)量,默認(rèn)為2,一旦這N個(gè)節(jié)點(diǎn)啟動(dòng),就會(huì)立即進(jìn)行數(shù)據(jù)恢復(fù)。1.25、cluster.routing.allocation.node_initial_primaries_recoveries: 4初始化數(shù)據(jù)恢復(fù)時(shí),并發(fā)恢復(fù)線程的個(gè)數(shù),默認(rèn)為4。1.26、cluster.routing.allocation.node_concurrent_recoveries: 2 添加刪除節(jié)點(diǎn)或負(fù)載均衡時(shí)并發(fā)恢復(fù)線程的個(gè)數(shù),默認(rèn)為4。1.27、indices.recovery.max_size_per_sec: 0 設(shè)置數(shù)據(jù)恢復(fù)時(shí)限制的帶寬,如入100mb,默認(rèn)為0,即無(wú)限制。1.28、indices.recovery.concurrent_streams: 5設(shè)置這個(gè)參數(shù)來(lái)限制從其它分片恢復(fù)數(shù)據(jù)時(shí)最大同時(shí)打開(kāi)并發(fā)流的個(gè)數(shù),默認(rèn)為5。1.29、discovery.zen.minimum_master_nodes: 1設(shè)置這個(gè)參數(shù)來(lái)保證集群中的節(jié)點(diǎn)可以知道其它N個(gè)有master資格的節(jié)點(diǎn)。默認(rèn)為1,對(duì)于大的集群來(lái)說(shuō),可以設(shè)置大一點(diǎn)的值(2-4)1.30、discovery.zen.ping.timeout: 3s 設(shè)置集群中自動(dòng)發(fā)現(xiàn)其它節(jié)點(diǎn)時(shí)ping連接超時(shí)時(shí)間,默認(rèn)為3秒,對(duì)于比較差的網(wǎng)絡(luò)環(huán)境可以高點(diǎn)的值來(lái)防止自動(dòng)發(fā)現(xiàn)時(shí)出錯(cuò)。1.31、discovery.zen.ping.multicast.enabled: false設(shè)置是否打開(kāi)多播發(fā)現(xiàn)節(jié)點(diǎn),默認(rèn)是true。1.32、discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"]設(shè)置集群中master節(jié)點(diǎn)的初始列表,可以通過(guò)這些節(jié)點(diǎn)來(lái)自動(dòng)發(fā)現(xiàn)新加入集群的節(jié)點(diǎn)。 下面是一些查詢(xún)時(shí)的慢日志參數(shù)設(shè)置index.search.slowlog.level: TRACEindex.search.slowlog.threshold.query.warn: 10sindex.search.slowlog.threshold.query.info: 5sindex.search.slowlog.threshold.query.debug: 2sindex.search.slowlog.threshold.query.trace: 500msindex.search.slowlog.threshold.fetch.warn: 1sindex.search.slowlog.threshold.fetch.info: 800ms index.search.slowlog.threshold.fetch.debug:500msindex.search.slowlog.threshold.fetch.trace: 200ms1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
es啟動(dòng)外部掛載啟動(dòng)
docker run --name es -p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms128m -Xmx512m" \-v /dockerData/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \-v /dockerData/elasticsearch/data:/usr/share/elasticsearch/data \-v /dockerData/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-d elasticsearch:7.9.0
如果es啟動(dòng)報(bào)錯(cuò)如下
ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
該錯(cuò)誤是掛載權(quán)限不足,修改目錄權(quán)限
sudo chmod -R 777 /dockerData/elasticsearch/configsudo chmod -R 777 /dockerData/elasticsearch/datasudo chmod -R 777 /dockerData/elasticsearch/plugins
kibana啟動(dòng)
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://xxxxxx:9200 -p 5601:5601 -d kibana:7.9.01
docker start esdocker start kibana# 如果沒(méi)有nginx,啟動(dòng)時(shí)會(huì)自動(dòng)下載docker exec -it es /bin/bashdocker run -p 80:80 --name nginx -d nginx:latest# 將docker容器內(nèi)部文件拷貝到宿主機(jī)docker container cp nginx:/etc/nginx .
ik分詞器下載
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.9.0
在掛載的/dockerData/elasticsearch/plugins
下創(chuàng)建ik
文件夾
上傳到ik文件夾下解壓,重啟es
yum install -y unzipunzip elasticsearch-analysis-ik-7.9.0.zip
docker restart esdocker restart kibana
解壓后文件需要在plugins下的ik 的目錄下,不然執(zhí)行會(huì)報(bào)異常
3.分詞器
ES 中處理分詞的部分被稱(chēng)作分詞器,英文是Analyzer,它決定了分詞的規(guī)則。ES 自帶了很多默認(rèn)的分詞器,比如Standard、Keyword、Whitespace等等,默認(rèn)是Standard。當(dāng)我們?cè)谧x時(shí)或者寫(xiě)時(shí)分詞時(shí)可以指定要使用的分詞器
1.分詞測(cè)試
測(cè)試hello world 是如何分詞的
POST _analyze{ "analyzer": "standard", "text": "hello world"}
2.ES中默認(rèn)分詞器
Standard Analyzer - 默認(rèn)分詞器,按詞切分,小寫(xiě)處理
Simple Analyzer - 按照非字母切分(符號(hào)被過(guò)濾), 小寫(xiě)處理
Stop Analyzer - 小寫(xiě)處理,停用詞過(guò)濾(the,a,is)
Whitespace Analyzer - 按照空格切分,不轉(zhuǎn)小寫(xiě)
Keyword Analyzer - 不分詞,直接將輸入當(dāng)作輸出
Patter Analyzer - 正則表達(dá)式,默認(rèn)\W+(非字符分割)
Language - 提供了30多種常見(jiàn)語(yǔ)言的分詞器
Customer Analyzer 自定義分詞器
查看地址列分詞情況:
GET news/_analyze{ "field": "address", "text": "198 mill lane"}
執(zhí)行結(jié)果
{ "tokens" : [ { "token" : "198", "start_offset" : 0, "end_offset" : 3, "type" : "", "position" : 0 }, { "token" : "mill", "start_offset" : 4, "end_offset" : 8, "type" : "", "position" : 1 }, { "token" : "lane", "start_offset" : 9, "end_offset" : 13, "type" : "", "position" : 2 } ]}
這些分詞器默認(rèn)都是對(duì)英文進(jìn)行分詞,如果是中文就會(huì)出現(xiàn)每個(gè)漢字進(jìn)行分詞
3.IK分詞器
由于默認(rèn)都是英文分詞,所有需要安裝中文分詞插件,安裝后可以進(jìn)行中文分詞
ik_smart,智能分詞,會(huì)做最粗粒度的拆分
ik_max_word,最細(xì)粒度拆分
POST _analyze{ "analyzer": "ik_smart" , "text": "我是中國(guó)人"}
4.自定義分詞器
待補(bǔ)充
來(lái)源:https://blog.csdn.net/weixin_54158370/article/details/140017954
來(lái)源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺(tái),并已注明來(lái)源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)聯(lián)系小編,我們會(huì)及時(shí)審核處理。
聲明:江蘇教育黃頁(yè)對(duì)文中觀點(diǎn)保持中立,對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對(duì)文章觀點(diǎn)負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。
Copyright©2013-2025 ?JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢(xún)平臺(tái)保留所有權(quán)利
蘇公網(wǎng)安備32010402000125
蘇ICP備14051488號(hào)-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司
南京思必達(dá)教育科技有限公司版權(quán)所有 百度統(tǒng)計(jì)