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