前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【全文检索_05】Elasticsearch 基本使用 ㈠

【全文检索_05】Elasticsearch 基本使用 ㈠

作者头像
Demo_Null
发布2021-02-02 16:52:51
5370
发布2021-02-02 16:52:51
举报
文章被收录于专栏:Java 学习Java 学习

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_smartik_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

显示模板信息

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 数据类型
    • 1.1.1 核心数据类型
      • 1.1.2 复杂数据类型
      • 1.2 Document 操作
        • 1.2.1 Restful 操作
          • 1.2.2 自动创建 Mapping
            • 1.2.3 手动创建 Mapping
              • 1.2.4 修改文档
                • 1.2.5 删除索引/文档
                • 1.3 分词器
                  • 1.3.1 默认分词器
                    • 1.3.2 IK 分词器
                      • 1.3.3 Mapping 指定分词器
                        • 1.3.4 查询元数据
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档