ElasticSearch 实现分词全文检索 - Restful基本操作

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: ElasticSearch 实现分词全文检索 - Restful基本操作

Restful 语法

GET 请求:

http://ip:port/index: 查询索引信息
http://ip;port/index/type/doc_id: 查询指定的文档信息

POST 请求:

http://ip;port/index/type/_search: 查询文档,可以在请求体中添加json字符串来代表查询条件
http://ip;port/index/type/doc_id/_update: 修改文档,在请求体中指定ison字符串代表修改的具体信息

PUT 请求:

http://ip;port/index: 创建一个索引,需要在请求体中指定索引的信息,类型,结构
http://ip:port/index/type/_mappings: 代表创建索引时,指定索引文档存储的属性的信息

DELETE 请求:

http://ip;port/index: 删除跑路
http://ip;port/index/type/doc_id: 删除指定的文档

操作

创建一个索引

Kibana 操作

创建 person 索引

# 创建一个索引
PUT /person
{
  "settings": {
    "number_of_shards": 5, #分片数
    "number_of_replicas": 1 #备份数
  }
}

返回值

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "person"
}

Kibana 中查看

Stack Management -> 索引管理

单机版,分片无法存放,所以 yellow 黄色

查看索引信息

# 查看索引信息
GET /person

删除索引信息

# 删除索引
DELETE /person

Kibana 操作

Field datatypes

String:
 text: 一般用于全文检索。将当前的Field进行分词
 keyword: 当前 Field 不会被分词 
数值类型:
 long、 integer、 short、 byte、 double、 float、
 half_float:精度比float小一半
 scaled_float:根据一个long和scaled来表达一个浮点型, long=345,scaled=100 => 3.45
时间类型:
 date:针对时间类型指定具体格式
布尔类型:
 boolean:表达true和false
二进制类型:
 binary:暂时支持Base64 encode string
范围类型(Range datatypes):
 long_range: 赋值时,无序指定具体的内容,只需要存储一个范围即可,指定gt,此,gte,lte
 integer_range:同上
 double_range:同上
 float_range: 同上
 date_range:同上
 ip_range: 同上。
经纬度类型:
 geo_point: 用来存储经纬度,结合定位的经纬度,来计算出距离
IP类型
 ip: 可以存付IPV4、IPV6

其它类型参考官网:

创建索引并指定结构

## 创建索引并指定结构
PUT /book
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    // 文档存储的Field
    "properties":{
      "name":{
        // 类型
        "type":"text",
        // 指定分词器
        "analyzer":"ik_max_word",
        // 指定当前Field可以被作为查询的条件
        "index":true,
        // 是否需要额外存储
        "store":false
      },
      "author":{
        "type":"keyword"
      },
      "count":{
        "type":"long"
      },
      "on-sale":{
        "type":"date",
        // 时间类型时格式化方式
        "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
      },
      "descr":{
        "type":"text",
        "analyzer":"ik_max_word"
      }
    }
  }
}

文档操作

文档在ES服务中的唯一标识,_index, _type, _id 三个内容为组合,锁定一个文档进行操作

新建文档

自动生成 _id

ID不方便使用

# 添加文档,自动生成 id
POST /book/_doc
{
  "name":"太极",
  "author":"伏羲",
  "count":888,
  "on-sale":"2023-02-23",
  "descr":"太极生两仪,两仪生四象,四象生八卦"
}

返回

{
  "_index" : "book",
  "_type" : "_doc", //创建时没指定,默认的
  "_id" : "YJJLfYYBGlLaT58LDoV5",  // 自动生成的ID
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

手动创建ID

POST /book/_doc/1
{
  "name":"太极拳",
  "author":"陈王廷",
  "count":666,
  "on-sale":"2023-02-23",
  "descr":"掤、捋、挤、按、采、列、肘、靠"
}

返回值

{
  "_index" : "book",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 1,
  "_primary_term" : 1
}

修改文档

覆盖式修改

PUT /book/_doc/1
{
  "name":"太极拳",
  "author":"陈王廷",
  "count":666, //如果不赋值,原来的值将被更新成 0
  "on-sale":"2023-02-28",
  "descr":"掤、捋、挤、按、采、列、肘、靠"
}

doc 修改方式

Deprecation: [types removal] Specifying types in document update requests is deprecated, use the endpoint /{index}/_update/{id} instead.

POST /book/_doc/1/_update
{
  "doc":{
    // 指定Field单独修改
    "count":6666
  }  
}

返回值

#! Deprecation: [types removal] Specifying types in document update requests is deprecated, use the endpoint /{index}/_update/{id} instead.
{
  "_index" : "book",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 2,
  "_primary_term" : 1
}

删除文档

DELETE /book/_doc/YJJLfYYBGlLaT58LDoV5

查看数据

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
11月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
218 5
|
11月前
|
自然语言处理 Java 网络架构
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
这篇文章是关于如何自定义Elasticsearch的ik分词器配置以满足特定的中文分词需求。
560 0
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
|
10月前
|
测试技术 API 开发工具
ElasticSearch的IK分词器
ElasticSearch的IK分词器
198 7
|
11月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
1074 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
存储 自然语言处理 关系型数据库
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
聚合、补全、RabbitMQ消息同步、集群、脑裂问题、集群分布式存储、黑马旅游实现过滤和搜索补全功能
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
|
JSON 自然语言处理 Java
ElasticSearch 实现分词全文检索 - 搜素关键字自动补全(Completion Suggest)
ElasticSearch 实现分词全文检索 - 搜素关键字自动补全(Completion Suggest)
440 1
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。
|
自然语言处理 Java 关系型数据库
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
ElasticSearch 实现分词全文检索 - SpringBoot 完整实现 Demo 附源码【完结篇】
279 0
|
存储 自然语言处理 Java
ElasticSearch 实现分词全文检索 - 经纬度定位商家距离查询
ElasticSearch 实现分词全文检索 - 经纬度定位商家距离查询
263 0
|
4月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
2061 0