9300與9200區別:
9300端口:ES節點之間通訊使用
9200端口:ES節點和外部通訊使用
9300是TGP協議端口號,ES集羣之間通訊端口號
9200端口號,暴露 ES RESTful接口端口號
Dsl語言查詢與過濾
什麼是DSL語言
es中的查詢請求有兩種方式,一種是簡易版的查詢,另外一種是使用JSON完整的請求體叫做結構化查詢(DSL)。
由於DSL查詢更爲直觀也更爲簡易,所以大都使用這種方式。
DSL查詢是POST過去一個json,由於post的請求是json格式的,所以存在很多靈活性,也有很多形式。
###term 查詢是精確匹配
GET /mymayikt/user/_search
{
"query": {
"term": {
"name": "xiaohong"
}
}
}
#like match 支持分詞查詢
GET /mymayikt/user/_search
{
"from": 0,
"size": 1,
"query": {
"match": {
"car": "奧迪"
}
}
}
Term與 Match區別:
Term查詢不會對字段進行分詞查詢,會採用精確匹配。
Match會根據該字段的分詞器,進行分詞查詢。
中文分詞器
因爲 Elasticsearch中默認的標準分詞器分詞器對中文分詞不是很友好,會將中文詞語拆分成一個一箇中文的漢字。因此引入中文分詞器-es-ik插件
官方網站下載https://github.com/medcl/elasticsearch-analysis-ik/releases
注意:es-ik分詞插件版本一定要和es安裝的版本對應
第一步:下載es的IK插件
第二步:上傳到/usr/share/elasticsearch/plugins/ik/ 然後使用unzip命令解壓
第三步:重啓 elasticsearch即可
未使用中文分詞器時
返回結果:默認將中文詞語拆分成一個一箇中文的漢字
使用中文分詞器:請求及結果:
自定義擴展字典
在/usr/share/elasticsearch/plugins/ik/config/目錄下,創建dic文件
vi new_word.dic
馬雲
王者榮耀
公式相聲xxx
修改vi IKAnalyzer.cfg.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 擴展配置</comment>
<!--用戶可以在這裏配置自己的擴展字典 -->
<entry key="ext_dict">new_word.dic</entry>
<!--用戶可以在這裏配置自己的擴展停止詞字典-->
<entry key="ext_stopwords"></entry>
<!--用戶可以在這裏配置遠程擴展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用戶可以在這裏配置遠程擴展停止詞字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
修改後重啓elasticsearch
查詢結果: