1.ES基本概念
什么是ES
ES是一个基于Lucene搜索引擎实现的专注于搜索场景的非关系型数据库
ES也是文档型存储的数据库,因为存储的数据类型是JSON
2.ES的核心概念
索引Index
从7以后,与类型(表)是一个绑定关系,通常我们把一张表绑定到一个索引,
所以我们也可以将索引看做是表的概念
类型type
从7以后, 一个索引下只有一个类型_doc
文档Document
一行数据就是一个文档
字段Filed
一个属性就是一个字段
3.数据类型
了解ES提供的各大类型,简单来说就是java中提供ES都有
重点了解
`text=>全文搜索
·需要进行分词,做全文搜索的字段使用
`keyword=>精确搜索
·需要精确匹配的字段使用
4.文档操作
新增操作
1.如果索引不存在, 会自动创建索引以及数据结构
2.ES中默认的id为_id,如果新增时不指定,会自动创建一个随机字符串,如果指定就是指定的值
3.新增时,如果该数据已存在,就会变成更新操作,而且默认是全量更新
更新文档
全量:直接与新增操作相同
部分:
请求方法:POST
请求路径:/索引/_update/id
参数:{"doc":{字段}}
查询文档(了解) 删除文档
删除实际是软删除,不会将内存回收,仅仅是清空对象中的数据,并更新版本
全局搜索
单个字段搜索与多个字段搜索
match
{"query":{"match":{字段}}}
multi_match
{"query":{"multi_match":{"query":关键字,"fileds":[字段...]}}
中文分词
默认分词器不支持中文,对中文分词是一个一个字的拆分
IK分词器
ik_smart:粗粒度分词,能分多粗分多粗
ik_max_word:细粒度分词,能分多细就分多细
词库:维护着需要拆的词,以及哪些词不需要