【Elasticsearch】Rest风格API(一)

简介: 【Elasticsearch】Rest风格API
  1. Rest风格API

Elasticsearch提供了Rest风格的API,即http请求接口

  1. 基本概念

Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。

索引(indices)

Databases 数据库

类型(type)

Table 数据表

文档(Document)

Row 行

字段(Field)

Columns 列

  1. 索引库(indices):indices是index的复数,代表许多的索引
  2. 类型(type):类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念
  3. 文档(document):存入索引库原始的数据。比如每一条商品信息,就是一个文档
  4. 字段(field):文档中的属性
  5. 映射配置(mappings):字段的数据类型、属性、是否索引、是否存储等特性

1.官网

Elasticsearch Guide [6.8] | Elastic

  1. 索引操作
  1. 创建索引:put请求
  1. 2.使用kibana创建索引
  1. 请求方式:PUT
  2. 请求路径:索引库名
  3. 请求参数:json格式
put book
{
  "settings":{
    "number_of_shards":1, /*分片数量*/
    "number_of_replicas":0 /*副本数量*/
  }
}

ab48af3b453f403bada3da64d1e3f0ca.png

  1. number_of_shards 是指索引要做多少个分片,只能在创建索引时指定,后期无法修改。
  2. number_of_replicas 是指每个分片有多少个副本,后期可以动态修改
  3. 什么是分片?

ES中所存数据的文件块,也是数据的最小单元块。假如有2个分片,插入10条数据,默认,每个分片存5条。

  1. 查看索引:get请求

get 索引库名


2b93256c438b48798bb675745b686da8.png

我们可以使用*来查询所有索引库

2c1bf4d801594a6bbc9bbfb0661d0fe2.png


  1. 删除索引:delete请求

delete 索引库名


21c10531848547b9a0cc6cf5fd819f44.png

  1. 映射配置

创建索引库,就相当于mysql创建“数据库”。接着我们来配置映射,相当于mysql创建“表结构”。

1.在ElasticSearch中,我们常配置:

  1. 字段的数据类型
  2. 是否要存储
  3. 是否要索引
  4. 是否分词
  5. 分词器是什么
  1. 创建映射关系

PUT /索引库名/_mapping/类型名称

{
  "properties": {
    "字段名": {
      "type": "类型",
      "index": true,
      "store": true,
      "analyzer": "分词器"
    }
  }
}

1.类型名称:基本概念中所说的type,类似于数据库中的表

1.字段名:类似于数据库中的列名。

  1. type:类型,可以是text、keyword、long、short、date、integer、object等
  2. index:是否索引,默认为true
  3. store:是否存储,默认为false
  4. analyzer:分词器,这里的`ik_max_word`即使用ik分词器

2.实例

/* 1.先创建索引 */
put czxy
/* 2.创建映射关系 */
put czxy/_mapping/book
{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "images": {
      "type": "keyword",
      "index": "false"
    },
    "price": {
      "type": "float"
    }
  }
}

b39c90d2c00744bd9709d9c3b64441b3.png

  1. 查看映射关系

GET /索引库名/_mapping934c3372dac741aebe9d9cdec46b1452.png


  1. 字段属性详解

1type


1.Elasticsearch中支持的数据类型非常丰富

1.String类型,又分两种:

  1. text修饰字符串,默认进行分词,并生成索引。不能用来过滤、排序和聚合等操作。
  2. keyword修饰字符串,不会分词,不会建立索引。常常被用来过滤、排序和聚合。

2.Numerical:数值类型,分两类

  1. 基本数据类型:long、interger、short、byte、double、float、half_float
  2. 浮点数的高精度类型:scaled_float
  3. 需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。

3.Date:日期类型

  1. elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。


2)index


index影响字段的索引情况。


  1. true:字段会被索引,则可以用来进行搜索。默认值就是true
  2. false:字段不会被索引,不能用来搜索


index的默认值就是true,也就是说你不进行任何配置,所有字段都会被索引。


但是有些字段是我们不希望被索引的,比如商品的图片信息,就需要手动设置index为false。


3store


是否将数据进行额外存储。


Elasticsearch在创建文档索引时,会将文档中的原始数据备份,保存到一个叫做`_source`的属性中。而且我们可以通过过滤`_source`来选择哪些要显示,哪些不显示。


而如果设置store为true,就会在`_source`以外额外存储一份数据,多余,因此一般我们都会将store设置为false,事实上,**store的默认值就是false。**


  1. 数据操作
  1. 添加数据
  1. 语法:没有id
POST _index/_type/
{
  "属性": "值",
  ....
}
  1. 实例
POST czxy/book/
{
  "title": "标题",
  "price": 1234
}


c95757accdd4494fa536f0c88b72574f.png



相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
11月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
存储 人工智能 自然语言处理
Elasticsearch Inference API增加对阿里云AI的支持
本文将介绍如何在 Elasticsearch 中设置和使用阿里云的文本生成、重排序、稀疏向量和稠密向量服务,提升搜索相关性。
829 14
Elasticsearch Inference API增加对阿里云AI的支持
|
存储 人工智能 API
(Elasticsearch)使用阿里云 infererence API 及 semantic text 进行向量搜索
本文展示了如何使用阿里云 infererence API 及 semantic text 进行向量搜索。
814 8
|
监控 API 索引
Elasticsearch集群使用 _cluster/health API
Elasticsearch集群使用 _cluster/health API
900 2
|
Unix API 索引
Elasticsearch集群使用 _cat/health API
Elasticsearch集群使用 _cat/health API
498 1
|
缓存 API 网络架构
掌握现代API开发:GraphQL vs REST
【10月更文挑战第24天】本文深入探讨了现代API开发中两种主流技术——GraphQL和REST的设计理念、技术特点及实际开发中的对比分析。GraphQL通过声明式数据请求和强类型系统提供更高的灵活性和性能,而REST则以其无状态特性和成熟的生态系统见长。文章还讨论了两者在客户端-服务器交互、安全性和工具支持方面的优劣,帮助开发者根据项目需求做出明智选择。
|
12月前
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。
|
11月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南