官方文档【英文】:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
官方文档【中文】:https://www.elastic.co/guide/cn/elasticsearch/guide/current/foreword_id.html
社区中文:https://doc.codingdict.com/elasticsearch/0/
一、基本概念
1、 Index(索引)
动词,相当于MySQL中的Insert
名词,相当于MySQL中的Database
2、 Type(类型)
Index可被定义多个类型,类似于MySQL中的Table,每一种类型的数据放在一起
3、 Document(文档)
保存在某个索引下,某种类型的一个数据,文档是JSON格式
Document就像MySQL某Table中的内容
倒排索引机制
二、Docker中安装ElasticSearch
1、下载镜像文件
docker pull elasticsearch:7.4.2 #存储和检索数据
docker pull kibana:7.4.2 #可视化检索数据
2、创建实例
1、ElasticSearch
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
注意:
-e ES_JAVA_OPTS=“-Xms64m -Xms 128m” \ 测试环境下,设置ES初始内存和最大内存,否则导致占用内存过大启动不了ES
2、Kibana
docker run --name kibana \
-e ELASTICSEARCH_URL=http://112.124.32.136:9200 \
-p 5601:5601 \
-d kibana:7.4.2
报错:
docker 中 启动Kibana 时遇到no living connections ,unable revive connection :http://elasticsearch
# 进入kibana内部
docker exec -it kibana /bin/bash
vi /config/kibana.yml
# 修改 http://elasticsearch:9200 为 http://ip地址:9200
# Ctrl + p + q 退出容器
# 重启容器
docker restart kibana
开机自启
docker update 容器ID --restart=always
ik分词器
进入es容器内部plugins目录
docker exec -it 容器ID /bin/bash
下载
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/downloads/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
解压
unzip 文件
mv elasticsearch/ik
cd …/
elasticsearch-plugin list: 即可列出系统分词器
自定义词汇
进入nginx/html
创建es/fenci.txt,键入自定义词汇
打开elasticsearch/plugins/ik/config/IKanalyzer.cfg.xml
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sfXsuZQ8-1646359338174)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1645778947140.png)]
修改远程扩展字典为http://ip/es/fenci.txt
重启elasticsearch:docker restart elasticsearch
三、应用
查看节点信息
GET http://ip:9200/_cat/nodes
{
"doc": {
//数据
}
}
查看索引信息
GET http://ip:9200/_cat/indices
获取文档信息
GET http://ip:9200/索引/类型/ID
保存文档信息
携带ID
PUT http://ip:9200/索引/类型/ID
特点:
每次操作都会生效,若存在ID则更新,否则新建
{
//数据
}
不携带ID
POST http://ip:9200/索引/类型
特点:
新建,ID为随机字符串
{
//数据
}
明确更新
POST http://ip:9200/索引/类型/ID/_update
特点:
先比较原数据,若相同则不生效
{
"doc": {
//数据
}
}
https://www.elastic.co/guide/en/elastic-stack/index.html
ElasticSearch-Rest-Client
官方RestClient,封装了ES操作,API层次分明上手简单
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZRe0mo1X-1646359338175)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1645842098402.png)]