C/C++教程

2.3(ElasticSearch)http操作和分词器

本文主要是介绍2.3(ElasticSearch)http操作和分词器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • ElasticSearch核心概念
      • 索引(index)
      • 类型(type)
      • 映射(mapping)
      • 文档(document)
      • 倒排索引
  • 操作ElasticSearch
    • Restful
    • 操作索引
      • 测试(postman方式)
        • **put进行添加**
        • **get: _all查询所有**
        • **查询多个,使用逗号隔开多个索引**
      • Kibana测试
    • 操作映射
      • 简单数据类型
        • 字符串
        • 数值
        • 布尔
        • 二进制
      • 复杂数据类型
      • kibana的测试
    • 操作文档
  • 分词器
    • IK分词器
      • 环境准备
        • 设置JAVA_HOME
      • 安装Maven
        • 下载Maven安装包
        • 配置Maven
        • 测试
      • 安装ik分词器
        • 下载IK
        • 解压IK
        • 使用maven进行打包成jar文件
        • 打包完成后
        • 将压缩解压后地配置文件放入ElasticSearch中
      • 重启elasticSearch测试
    • 测试ik分词器
    • 查询文档
      • 创建索引,指定分词器
      • term查询
      • match查询

ElasticSearch核心概念

索引(index)

ES存储数据的地方。文档集合

(索引命名:英文数字不能包含下划线)

一个索引对应一个映射。映射表示存储数据的格式:(类似于Mysql中的数据表形式)映射又指定了数据文档的格式。

索引中指定了映射(文档的格式)

索引是文档的集合

类型(type)

一种type就是一类表。比如用户表,角色表

ES7.x默认type为_doc

在这里插入图片描述

映射(mapping)

指定了文档的格式

定义每个字段的类型,字段所使用的分词器,相当于关系数据库的表结构

文档(document)

ES数据最小单元,常以json格式显示。一个document相当于关系型数据库的一行数据

倒排索引

一个倒排索引由文档中所有不重复的词列表构成。

对于其中每个词,对应一个包含它的文档id列表

在这里插入图片描述

操作ElasticSearch

两种方式操作ES

  1. Restful风格:restful都是到根据不同的请求方式就可以实现不同的结果
  2. java的代码:使用java的api调用完成。底层也是使用请求的形式

Restful

操作索引

这里先直接展示结果

在这里插入图片描述

测试(postman方式)

put进行添加

在这里插入图片描述

get: _all查询所有

在这里插入图片描述

查询多个,使用逗号隔开多个索引

在这里插入图片描述

Kibana测试

上面通过postman进行测试,发现是没问题的

kibana有着更好的结构和提示

在这里插入图片描述

操作映射

简单数据类型

字符串

在这里插入图片描述

数值

在这里插入图片描述

布尔

boolean

二进制

基本上不用

binary

复杂数据类型

数组:[]

对象:{}

kibana的测试

当然内部的属性名称不是固定的

在这里插入图片描述

操作文档

在这里插入图片描述

根据上图发现四种请求方式

  1. POST:新增
  2. Get:查询
  3. Delete:删除
  4. Put:存在就更新,不存在就添加。(必须带着id)

索引中指定了映射(文档的格式)

索引是文档的集合

分词器

分词器:将一段文本,按照一定逻辑,分析成多个词语。

(比如:华为手机:华为,手,手机)

ElasticSearch内置多个分词器

在这里插入图片描述

ElasticSearch内置的分词器对中文不是很友好(中文按照一个一个的拆分),所以我们接下来会介绍IK分词器

在这里插入图片描述

IK分词器

环境准备

ElasticSearch要使用ik,就要构建ik的jar包,这里要用到maven包管理工具,而maven需要java环境。

Elastic内置JDK,所以将JAVA_HOME设置为ElasticSearch内置的jdk

设置JAVA_HOME

进入vim编辑器
vim /etc/profile


文件的末尾添加
export JAVA_HOME=/usr/src/elasticsearch-7.4.0/jdk
export PATH=$PATH:${JAVA_HOME}/bin


保存后
重新加载该文件
source /etc/profile

安装Maven

下载Maven安装包

解压maven安装包

在这里插入图片描述

配置Maven

在这里插入图片描述

配置文件地内容

在这里插入图片描述

测试

在这里插入图片描述

安装ik分词器

下载IK

下载IK对应自己地ElasticSearch版本

wget https://github.com/medcl/elasticsearch-analysis-ik/archive/v7.4.0.zip

在这里插入图片描述

解压IK

由于治理是zip不是gz包,所以使用unzio命令进行解压

在这里插入图片描述

使用maven进行打包成jar文件

切换到
cd 解压后地目录
maven进行打包
mvn package

在这里插入图片描述

打包完成后

package执行完毕后会在当前目录下生成

/target/releases目录

该目录中存在一个压缩文件。

下面就是操作该文件即可

在这里插入图片描述

将压缩解压后地配置文件放入ElasticSearch中

视频地解释操作在这里

在这里插入图片描述

重启elasticSearch测试

加载日志可以发现加载进入了Ik插件

在这里插入图片描述

有关于日志异常可以不用去管

在这里插入图片描述

测试ik分词器

存在两种模式

  1. ik_smart:粗粒度
  2. ik_max_word:细粒度

在这里插入图片描述

在这里插入图片描述

查询文档

这里的操作性很多。

使用Kibana进行发送命令,更加友好,有着提示等功能

创建索引,指定分词器

在这里插入图片描述

如果添加文档时候带入了,映射没有指定的数据

在这里插入图片描述

会进行动态的生成映射。但是还是不值得推荐这么写

term查询

查询的条件字符串和词条完全匹配

在这里插入图片描述

match查询

会将差选条件进行分词查询。

再去查询出现的交集

在这里插入图片描述

这两个查询需要在多个示例中找到规律。不过看意思也是能感觉出来的。
只是这里我没有展示很多的示例图

这篇关于2.3(ElasticSearch)http操作和分词器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!