1.1 数据类型
1.1.1 核心数据类型
类型 | |
---|---|
字符串类型 | text【分词】、keyword【不分词】 |
数值类型 | long、integer、short、byte、double、float、half_float、scaled_float |
日期类型 | date |
布尔类型 | boolean |
二进制类型 | binary |
范围类型 | integer_range、float_range、long_range、double_range、date_range |
1.1.2 复杂数据类型
类型 | |
---|---|
数组类型 | array |
对象类型 | object |
嵌套类型 | nested object |
地理位置类型 | geo_point【点】、geo_shape【形状】 |
1.2 Document 操作
1.2.1 Restful 操作
method | URL | 说明 |
---|---|---|
PUT | 索引名称/类型名称/文档id | 创建文档(指定文档id) |
POST | 索引名称/类型名称 | 创建文档(随机文档id) |
POST | 索引名称/类型名称/文档id/_update | 修改文档 |
DELETE | 索引名称/类型名称/文档id | 删除文档 |
GET | 索引名称/类型名称/文档id | 通过文档 id 查询文档 |
POST | 索引名称/类型名称/_search | 查询所有的数据 |
1.2.2 自动创建 Mapping
如上图所示,我们就创建一个名为 my_index 的索引并在其下创建了 id 为 001 的文档,在创建索引时我们并没有指定 Mapping,所以在添加数据时会自动帮我们匹配数据类型。可以使用 GET my_index/_mapping
查看索引的 Mapping。
1.2.3 手动创建 Mapping
如上图所示,就创建好了一个指定数据类型的索引,然后向其中添加数据就行了,添加数据就是创建文档,方式参考 1.2.1 。我们使用 GET my_index1/_search
就可以查询到索引中的全部数据了。需要注意的是,不论是自动匹配的数据类型还是自己声明的数据类型,一经确定就不能存其他类型的数据了。
1.2.4 修改文档
如上图所示,我们在同一个索引中添加相同文档 id 的数据(POST、PUT 均可),他会覆盖上一个文档中的数据,另外数据的版本号 _version 1,注意这种方式如果漏掉了某些数据,不会保留旧的数据,相当于删除了旧的数据,根据新的重新创建。还有一种 update 方法,不设置某些值数据也不会丢失。
1.2.5 删除索引/文档
删除使用 DELETE
,会根据请求来判断删除的是文档还是索引。
1.3 分词器
1.3.1 默认分词器
在 ES 中字符串类型有 keyword 和 text 两种。keyword 默认不进行分词,text 不指定分词器会使用默认分词器分词,如上图所示,就是使用默认分词器分的,它将每一个汉字拆开称为独立的词,显然不适合生产环境,我们需要使用其他分词器来帮助我们。
1.3.2 IK 分词器
我们在之前的 【全文检索_03】Lucene 基本使用 中简单介绍了 IK 分词器的 Java API 的使用,ES 是基于 Lucene 开发的,那么也可以使用 IK 分词器,只不过大佬将 IK 封装成了一个插件,我们去 github 下载后,添加到 ES 的插件库中就可以使用了,简单粗暴来说就是下载后丢到 ES 的 plugins 文件夹中解压就 OK 了。
IK 分词器提供了两个分词算法 ik_smart
和 ik_max_word
,其中 ik_smart
为最粗粒度的拆分,即分词的时候只分一次,句子里面的每个字只会出现一次。ik_max_word
为最细粒度划分,即句子中字可以反复出现,只要在词库里面出现过的就拆分出来。
与之前一样,有 Ik 分词器中没有的词或者不想分词的词可以将其加入到扩展词典或者扩展停止词典中。注意这两个词典的后缀为 dic,一行代表一个词。
1.3.3 Mapping 指定分词器
注意,一定要在创建 Mapping 的时候指定分词器,否则会使用默认的分词器。在指定数据类型时,同时使用 analyzer
就可以指定分词器了,除了默认分词器 Standard 以外,指定其他分词器的前提是已经加载该分词插件。
1.3.4 查询元数据
如上图所示,使用 GET _cat
就可以查询元数据了,查询后加上 ?v
会显示返回数据的字段名,加 ?help
显示命令返回的参数说明,加 ?h
选择要显示的列,加 ?format
设置返回的内容格式(支持json,yaml,text等),加 ?sort
排序,多个参数一起使用,用 & 连接。详细 cat 用法参考 官网
元数据 | 说明 |
---|---|
plugins | 显示节点上的插件 |
health | 查看集群健康状况 |
indices | 查看索引信息 |
count | 显示索引文档的数量 |
aliases | 显示别名,过滤器,路由信息 |
allocation | 显示每个节点分片数量、占用空间 |
master | 显示master节点信息 |
nodeattrs | 显示node节点属性 |
nodes | 显示node节点信息 |
pending_tasks | 显示正在等待的任务 |
recovery | 显示正在进行和先前完成的索引碎片恢复的视图 |
segments | 显示分片中的分段信息 |
shards | 显示索引分片信息 |
thread_pool | 显示线程池信息 |
templates | 显示模板信息 |