Elasticsearch学习
Elasticsearch基础概率
详情参考:核心概念
-
index(索引)
动词,相当于MySQL中的insert;
名词,相当于MySQL中的Database(由于ES 7.x 之后版本已删除Type概念,等价于 MySQL 中的表) -
Type(ES 7.x 之后版本已删除此概念)
在index中可以定义一个或者多个类型,类似于MySQL中的Table,每一种数据类型的数据放在一起 -
Document(文档)
保存在某个索引下,某种类型的一个数据,文档是JSON格式的,Document就像是MySQL中的某个table里面的内容
Docker安装Elasticsearch
- 拉取镜像
docker pull elasticsearch:版本 - 启动Elasticsearch
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -m 128m elasticsearch:版本 --name elasticsearch其中-e "discovery.type=single-node"表示添加环境变量已单节点方式运行 - 复制Elasticsearch配置文件docker
docker cp elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml /youPath/elasticsearch - 修复配置文件将
xpack.security.enabled: true; xpack.security.enrollment.enabled: true全都修改为false负责可能无法正常启动 - 删除原有容器,重新运行Docker启动命令,注意挂载配置文件位置
Elasticsearch基础命令学习
tips:ES 7.x 之后版本已删除Type概念,在请求url中需将原先带有分类的路径替换为_doc,例如创建索引POST /{indexName}/{type}/{id} 替换为POST /{indexName}/_doc/{id}
- _cat
GET /_cat/nodes; 查看所有节点
GET /_cat/health; 查看ES健康情况
GET /_cat/master; 查看主节点
GET /_cat/indices; 查看所有索引 类型与 show tables - 索引一个文档(保存)
保存一个数据,保存在哪个索引下,指定用哪个唯一标识
PUT /indexname/_doc/1在indexname索引下保存1号数据

PUT和POST都可以,其中POST新增,如果不指定ID,会自动生成ID。指定ID就会修改数据,并新增版本号
PUT可以新增可以修改,PUT必须指定ID,由于PUT需要指定ID,我们一般用来做修改操场,不指定ID会报错
其他详细基本操作参考地址:索引和文档的基本操作
ES进阶检索
- 直接拼接在URL方式(不推荐,后续使用DSL)
GET /indexname/_search?q=*&sort=account_number:asc其中q为查询参数*则表示查询全部sort表示排序,按照账号正序排序 - Query DSL
可直接参考文档:Query DSL
ES数据迁移
索引映射类型无法直接更新,常新建一个新的索引并映射好新的类型,然后进行数据迁移
POST _reindex
{
"source": {
"index": "my-index-000001"
},
"dest": {
"index": "my-new-index-000001"
}
}
分词器
- 标准分词器对中文支持不友好
GET /_analyze { "analyzer" : "standard", "text" : "Quick Brown Foxes!" } - 安装ik分词器
ik分词器地址
下载对应版本的压缩包后解压到es的plugins目录即可
使用示例:
详细使用规则参考官方文档即可GET /_analyze { "analyzer" : "ik_max_word", "text" : "我是中国人" } // 响应 { "tokens": [ { "token": "我", "start_offset": 0, "end_offset": 1, "type": "CN_CHAR", "position": 0 }, { "token": "是", "start_offset": 1, "end_offset": 2, "type": "CN_CHAR", "position": 1 }, { "token": "中国人", "start_offset": 2, "end_offset": 5, "type": "CN_WORD", "position": 2 }, { "token": "中国", "start_offset": 2, "end_offset": 4, "type": "CN_WORD", "position": 3 }, { "token": "国人", "start_offset": 3, "end_offset": 5, "type": "CN_WORD", "position": 4 } ] }
评论区