Elasticsearch7基础3

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

查询结果:

发布了104 篇原创文章 · 获赞 52 · 访问量 30万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章