1. 环境搭建
1.1 docker镜像
- 操作系统:MacOS(M3)
- 镜像:
bash
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
elasticsearch 7.17.18 a999bbbb3b45 2 days ago 624MB
kibana 7.17.18 8c3cf1cb48a1 2 days ago 930MB
- 运行:
bash
$ docker network create es-net
#$ docker run -d --name es -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" -v es-data:/usr/share/elasticsearch/data -v es-plugins:/usr/share/elasticsearch/plugins --privileged --network es-net -p 9200:9200 -p 9300:9300 elasticsearch:7.17.26
$ docker run -d --name es -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" -v /Users/bytedance/Documents/es/data:/usr/share/elasticsearch/data -v /Users/bytedance/Documents/es/plugins:/usr/share/elasticsearch/plugins --privileged --network es-net -p 9200:9200 -p 9300:9300 elasticsearch:7.17.18
$ docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://es:9200 --network=es-net -p 5601:5601 kibana:7.17.18
- 使用Dev Tools
1.2 分词器
ES在创建倒排索引
时需要对文档分词;在搜索时,需要对用户输入内容分词。但默认的分词规则对中文处理并不友好。
我们在kibana的DevTools中测试:
IK分词器
安装文档路径:https://github.com/infinilabs/analysis-ik/releases,版本 7.17.18
参考:https://www.cnblogs.com/ciel717/p/17657137.html
分词器的作用
- 创建倒排索引时对文档分词
- 用户搜索时,对输入的内容分词
IK分词器的几种模式
- ik_smart:智能切分,粗粒度
- ik_max_word:最细切分,细粒度
IK分词器 - 扩展词库
要扩展ik分词器的词库,只需要修改一个ik分词器目录中的config目录中的ikAnalyzer.cfg.xml
文件:
然后再名为ext.dic
的文件中,添加想要扩展的词语即可。
2.索引库操作
2.1 mapping属性
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html
mapping是对索引库中文档的约束,常见的mapping属性包括:
- type:字段数据类型,常见的简单类型有:
- 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
- 数值:long、integer、short、byte、double、float
- 布尔:boolean
- 日期:date
- 对象:object
- index:是否创建索引,默认为true
- analyzer:使用哪种分词器
- properties:该字段的子字段
2.2 创建索引库
ES中通过RESTful请求操作索引库、文档。请求内容用DSL语句来表示。创建索引库和mapping的DSL语句如下:
小练习:
bash
# 创建索引库
PUT /heima
{
"mappings": {
"properties": {
"info": {
"type": "text",
"analyzer": "ik_smart"
},
"email":{
"type": "keyword",
"index": false
},
"name": {
"type": "object",
"properties": {
"firstName":{
"type": "keyword"
},
"lastName":{
"type": "keyword"
}
}
}
}
}
}
效果图:
2.3 查询、删除 索引库
2.4 修改 索引库(添加字段)
索引库和mapping一旦创建无法修改
,但是可以添加新的字段,语法如下:
2.5 总结
- 创建索引库:
PUT /索引库名
- 查询索引库:
GET /索引库名
- 删除索引库:
DELETE /索引库名
- 添加字段:
PUT /索引库名/_mapping
3. 文档操作
3.1 添加文档
新增文档的DSL语法如下:
3.2 查看、删除文档
3.3 修改文档
4. RestClient操作ES
ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html