Elasticsearch不用多说,是提供核心的数据存储、搜索、分析功能的。
Elasticsearch对外提供的是Restful风格的API,任何操作都可以通过发送http请求来完成。不过http请求的方式、路径、还有请求参数的格式都有严格的规范。这些规范我们肯定记不住,因此我们要借助于Kibana这个服务。
为什么Elasticsearch搜索可以做到如此快? ---倒排索引
倒排索引
正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程。
而倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程。
怎么实现的词条分割的呢?----ik分词器
ik分词器
1. IK分词器有几种模式?
ik_smart:智能切分,粗粒度
ik_max_word:最细切分,细粒度2. IK分词器如何拓展词条?如何停用词条?
利用config目录的
IkAnalyzer.cfg.xml文件添加拓展词典和停用词典在词典中添加拓展词条或者停用词条
3. 分词器的作用是什么?
创建倒排索引时,对文档分词
用户搜索时,对输入的内容分词
基本概念(重点)

Mapping映射属性
Mapping是对索引库中文档的约束,常见的Mapping属性包括:
type:字段数据类型,常见的简单类型有:
字符串:
text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)数值:
long、integer、short、byte、double、float、布尔:
boolean日期:
date对象:
object
index:是否创建索引,默认为true
analyzer:使用哪种分词器
properties:该字段的子字段
例如下面的json文档:
{
"age": 21,
"weight": 52.1,
"isMarried": false,
"info": "黑马程序员Java讲师",
"email": "zy@itcast.cn",
"score": [99.1, 99.5, 98.9],
"name": {
"firstName": "云",
"lastName": "赵"
}
}
对应的每个字段映射(Mapping):
| 字段名 |
字段类型 |
类型说明 |
是否 参与搜索 |
是否 参与分词 |
分词器 |
|
|---|---|---|---|---|---|---|
| age |
|
整数 |
|
|
—— |
|
| weight |
|
浮点数 |
|
|
—— |
|
| isMarried |
|
布尔 |
|
|
—— |
|
| info |
|
字符串,但需要分词 |
|
|
IK |
|
| |
|
字符串,但是不分词 |
|
|
—— |
|
| score |
|
只看数组中元素类型 |
|
|
—— |
|
| name |
firstName |
|
字符串,但是不分词 |
|
|
—— |
| lastName |
|
字符串,但是不分词 |
|
|
—— |
|
索引库
Kibana是elastic公司提供的用于操作Elasticsearch的可视化控制台,它还提供了一个开发控制台(DevTools),在其中对Elasticsearch的Restful的API接口提供了语法提示,在开发控制台进行以下操作。
创建索引库
# PUT /heima
{
"mappings": {
"properties": {
"info":{
"type": "text",
"analyzer": "ik_smart"
},
"email":{
"type": "keyword",
"index": "false"
},
"name":{
"properties": {
"firstName": {
"type": "keyword"
}
}
}
}
}
}
索引库操作有哪些?
创建索引库:PUT /索引库名
查询索引库:GET /索引库名
删除索引库:DELETE /索引库名
修改索引库,添加字段:PUT /索引库名/_mapping
注意:索引库一旦创建,无法修改mapping,因此修改索引库能做的就是向索引库中添加新字段</

最低0.47元/天 解锁文章
1146

被折叠的 条评论
为什么被折叠?



