Elasticsearch初步认识
- ES概述
- 基本概念
- 正向索引和倒排索引
- IK分词器
- ik_smart最少切分
- ik_max_word为最细粒度划分
- ES索引库基本操作
- 对索引库操作
- 对文档操作
ES概述
Elasticsearch,简称为 ES,是一款非常强大的开源的高扩展的分布式全文检索引擎,可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的存储、检索数据.还可以可以实现日志统计、分析、系统监控等功能
基本概念
ES是面向文档存储,可以是数据库中的一条商品数据,一个订单信息
注:文档数据会被序列化为 json 格式后存储在 elasticsearch 中
索引:同类型文档的集合
文档:一条数据就是一个文档,es 中是 Json 格式
字段:Json 文档中的字段
映射:索引中文档的约束,比如字段名称、类型
注:常见的 mapping 属性包括
type:字段数据类型,常见的简单类型有:
字符串:text(可分词的文本),keyword(精确值,例如:品牌,国家,邮箱)
数值:long、integer、short、byte、double、float、
布尔:boolean
日期:date
对象:object
index:是否创建索引参与搜索,默认为 true,如果不需要参与搜索设置为 false
analyzer:使用哪种分词器
关系行数据库 MySQL 和 elasticsearch 对比
Mysql:擅长事务类型操作,可以确保数据的安全和一致性
Elasticsearch:擅长海量数据的搜索、分析、计算
正向索引和倒排索引
Mysql 采用正向索引:
基于文档 id 创建索引。查询词条时必须先找到文档,而后判断是否包含搜索的内容.
elasticsearch 采用倒排索引:
文档(document):每条数据就是一个文档
词条(term):文档按照语义分成的词语
IK分词器
**分词:**即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,然后进行一个匹配操作,默认的中文分词器是将每个字看成一个词,比如"我爱中国"会被分为"我",“爱”,“中”,“国”,这显然不符合要求,所以我们需要安装中文分词器IK来解决这个问题
注:IK提供了两个分词算法:ik_smart和ik_max_word
ik_smart最少切分
ik_max_word为最细粒度划分
注:还可以自定义分词(参考安装部分)
ES索引库基本操作
对索引库操作
1.创建索引库
2.通过GET请求获得具体信息
Get /new
3.修改索引库:
注:索引库和 mapping 一旦创建无法修改,但是可以添加新的字段
4.删除索引库
//DELETE /索引库名
DELETE /new
对文档操作
1.添加文档
POST /索引库名/_doc/文档 id
{ “字段名 1”:”值 1”
“字段名 2”:”值 2”
.....
}
2.查询文档
//GET /索引库名/_doc/文档 id
GET /new/_doc/1
3.修改文档
POST /索引库名/_update/文档 id
{ "doc":{
"要修改的字段":"新值"}
}
4.搜索文档
GET /news/_search
{"query":
{"match":{"title":"美国"}
}
}
5.删除文档
//DELETE /索引库名/_doc/文档 id
DELETE /new/_doc/1